从图片中可以看出: Query1和Query2在表和where子句中是相等的。但是当我从地址表中添加一个字段时,索引从索引扫描变为表扫描。我的问题是为什么?
注意:我看到推荐的索引,但我认为我没有权限更改数据库。
答案 0 :(得分:2)
这很可能发生,因为StateProvCode不是Address表的PK中的列,也不是INCLUDE列。所以SQL Server必须确定简单地扫描表会更便宜,而不是扫描PK然后在Address表中进行额外的查找以获得每行的StateProvCode值。您的性能可能会受到太大的影响,因为扫描索引可能只比扫描表格快一点(除非您有过滤索引)。当然,正如您所看到的,您可能需要创建一个真正提高性能的索引。