我已经阅读了几篇关于何时在列上创建索引的文章,所有这些文章都与Mysql,SQL Server或Oracle有关。我现在有一个关于我是否应该在我的专栏上创建索引的想法,但我希望在实际尝试之前得到一个学到的意见。
我有一个MS Access数据库,大约有15个表。所有表都有一个名为[Locations]
的列,此列几乎用于所有WHERE
子句和大多数JOIN
条件。该列目前有5个不同的值,即5个位置,即A,B,C,D,E。
所以我的问题是虽然这个专栏是大多数WHERE
子句和JOIN
的一部分,但价值的有限变化(只有5)让我对在其上创建索引犹豫不决。
请建议。
答案 0 :(得分:2)
重要的是要记住,Access数据库是“对等”(而不是“客户端 - 服务器”)数据库,因此表扫描对性能尤其不利,尤其是如果结束数据库文件位于网络共享上。因此,确保参与WHERE子句或JOIN的ON条件的所有字段都有索引始终是个好主意。
示例:我有一个包含一百万行的示例表和一个名为[Category]的字段,其中包含值“A”或“B”。如果没有[Category]字段中的索引,则查询
SELECT COUNT(*) AS n FROM [TestData] WHERE [Category] = 'B'
必须进行表扫描,并产生大约48 MB的总网络流量。只需在[类别]上添加索引,就可以将完全相同的查询的总网络流量减少到0.27 MB。