SQL2005索引

时间:2010-02-24 14:51:55

标签: sql-server-2005 clustered-index

正在扫描SQL2005数据库并查看表的以下两个索引:

**PK_CLUSTERED_INDEX**
 USER_ID
 COMPANY_ID
 DEPARTMENT_ID

**NON-unique_NON-clustered_INDEX**
 USER_ID
 COMPANY_ID

我最初的想法是,删除最后一个索引,因为PK_CLUSTERED_INDEX已经包含那些列,正确的顺序和排序。最后一个索引是否提供任何收益?

3 个答案:

答案 0 :(得分:0)

在这种情况下,删除索引,因为它是非唯一的,我敢打赌优化器从不命中它,第一个索引更独特,并且在找到之后不涉及行查找匹配。

第一个更好,你不会丢掉第二个。

答案 1 :(得分:0)

我会丢弃NON-unique_NON-clustered_INDEX索引,它是多余的,不需要。

答案 2 :(得分:0)

如果按User_ID或User_ID和Company_ID列进行搜索,则两个索引都可以实现。 但是,如果除了这两个字段之外还要查询Department_Id,那么只有PK索引才是理想的。

如果查询过滤了User_ID和Company_ID,并且需要返回其他数据列,则PK索引仍然是最佳的,因为它具有所有数据。虽然非聚集索引不是这样,但可能需要使用Key Lookup来提取效率不高的额外字段。

对我来说这看起来多余,所以我肯定会考虑删除它。

要查看索引是否实际使用/了解使用级别,您可以运行其中一个索引使用统计脚本。一个很好的例子是here