这两个覆盖的索引之间是否存在差异?
单独的MS SQL Server相关点。如果上述问题的答案是“没有区别”,那么我或者数据库引擎优化顾问(DTA)是否总是对所包含的列感到疯狂?
答案 0 :(得分:9)
是的,他们是不同的。
差异意味着(A,B)上的索引更宽,(A)上的索引包括(B),因此它们包含更多非叶页,生成更大的索引(更多页),更多IO,因此效率更低
但是,索引(A,B)将始终覆盖索引(A)包括(B)。因此,如果您已经在(A,B)上有索引,并且Tunning Advisor建议在(A)上包含(B)的新索引,那么某些方法很可疑。无论是使用DTA建议,还是对现有索引的分析。没有冒犯,但在这样的情况下,我倾向于相信DTA而非人类分析,所以请确保您的索引已经涵盖了DTA建议,包括订单和过滤器(针对SQL 2008)。