正在扫描SQL2005数据库并查看表的以下两个索引:
**PK_CLUSTERED_INDEX**
USER_ID
COMPANY_ID
DEPARTMENT_ID
**NON-unique_NON-clustered_INDEX**
USER_ID
COMPANY_ID
我最初的想法是,删除最后一个索引,因为PK_CLUSTERED_INDEX已经包含那些列,正确的顺序和排序。最后一个索引是否提供任何收益?
答案 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。