要在varchar列上创建索引 - 访问

时间:2016-03-04 09:54:48

标签: vb.net ms-access

我已经阅读了几篇关于何时在列上创建索引的文章,所有这些文章都与Mysql,SQL Server或Oracle有关。我现在有一个关于我是否应该在我的专栏上创建索引的想法,但我希望在实际尝试之前得到一个学到的意见。

我有一个MS Access数据库,大约有15个表。所有表都有一个名为[Locations]的列,此列几乎用于所有WHERE子句和大多数JOIN条件。该列目前有5个不同的值,即5个位置,即A,B,C,D,E。

所以我的问题是虽然这个专栏是大多数WHERE子句和JOIN的一部分,但价值的有限变化(只有5)让我对在其上创建索引犹豫不决。

请建议。

1 个答案:

答案 0 :(得分:2)

重要的是要记住,Access数据库是“对等”(而不是“客户端 - 服务器”)数据库,因此表扫描对性能尤其不利,尤其是如果结束数据库文件位于网络共享上。因此,确保参与WHERE子句或JOIN的ON条件的所有字段都有索引始终是个好主意。

示例:我有一个包含一百万行的示例表和一个名为[Category]的字段,其中包含值“A”或“B”。如果没有[Category]字段中的索引,则查询

SELECT COUNT(*) AS n FROM [TestData] WHERE [Category] = 'B'

必须进行表扫描,并产生大约48 MB的总网络流量。只需在[类别]上添加索引,就可以将完全相同的查询的总网络流量减少到0.27 MB。