为什么选择字段会更改索引扫描类型?

时间:2016-04-18 13:14:32

标签: sql sql-server tsql

从图片中可以看出: Query1和Query2在表和where子句中是相等的。但是当我从地址表中添加一个字段时,索引从索引扫描变为表扫描。我的问题是为什么?

注意:我看到推荐的索引,但我认为我没有权限更改数据库。

enter image description here

1 个答案:

答案 0 :(得分:2)

这很可能发生,因为StateProvCode不是Address表的PK中的列,也不是INCLUDE列。所以SQL Server必须确定简单地扫描表会更便宜,而不是扫描PK然后在Address表中进行额外的查找以获得每行的StateProvCode值。您的性能可能会受到太大的影响,因为扫描索引可能只比扫描表格快一点(除非您有过滤索引)。当然,正如您所看到的,您可能需要创建一个真正提高性能的索引。