0

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

**PK_CLUSTERED_INDEX**
 USER_ID
 COMPANY_ID
 DEPARTMENT_ID

**NON-unique_NON-clustered_INDEX**
 USER_ID
 COMPANY_ID

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

4

3 回答 3

0

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

第一个更好,你不会因为放弃第二个而失去任何东西。

于 2010-02-24T15:09:25.440 回答
0

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

于 2010-02-24T15:09:47.877 回答
0

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

如果查询在 User_ID 和 Company_ID 上进行过滤,并且需要返回其他数据列,那么 PK 索引仍然是最好的,因为它可以处理所有数据。而非聚集索引则不需要,因此可能需要 Key Lookup 来提取效率不高的额外字段。

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

要查看索引是否实际被使用/了解使用水平,您可以运行各种索引使用统计脚本之一。一个很好的例子是here

于 2010-02-24T15:10:56.080 回答