我应该在小表中添加索引吗?

时间:2011-04-05 13:54:36

标签: sql-server-2005 indexing

有没有理由在表中添加少量(少于10个)元素的索引? 它经常用在连接中,但我不确定这样小的表上的索引是否会提高其性能或降低。

编辑:表中的行非常小:7列,总大小小于500字节,所以我认为它可以存储在服务器内存中(这是Paul Sanwald的回答)

4 个答案:

答案 0 :(得分:2)

与所有性能问题一样,答案是:创建性能测试并测量结果。

否则,答案错误的可能性为90%。

答案 1 :(得分:2)

大小的表不太可能使用索引。如果表的大小稳定并且总是很小,我就不会添加索引。

来自联机丛书:

  

索引小表可能不是   最佳,因为它可以采取查询   优化器更长,以遍历索引   搜索数据而不是执行数据   简单的表扫描。因此,索引   在小桌子上可能永远不会使用,   但仍必须作为数据进行维护   在表中更改。

因此,对小型表进行索引可能是一个糟糕的主意。

答案 2 :(得分:0)

当您在表上创建主键时,它将创建一个聚簇索引(假设您尚未在表上创建另一个聚簇索引。只能有一个。)因为您正在讨论引用它其他表,我会假设你会这样做。因此,为了回答您的问题,没有必要创建索引,因为假设您使用主键来查找信息,将为您创建一个索引。

Sql Server Clustered Indexes

答案 3 :(得分:0)

可能不是,但它确实至少部分取决于您的表有多少列,以及这些列的类型。如果您的行太大而无法存储在内存中,但索引可能存在,那么在查询中经常使用的列子集上建立索引是有意义的。