我有一个查询并检查了SQL Management Studio中的执行计划。某些非聚集索引扫描步骤将返回表的PK列,而不是索引和连接列。例如:
select a.c10, b.c20
from a inner join b on a.c11 = b.c21
where a.c12 = 23
表a上的索引:
create unique nonclustered index ix_a_1 on a (a.c12 asc) include ( a.c13, a.c14)
查询计划显示:
index seek, nonclustered, ix_a_1 , output list: a.primary_key_col
查询中未使用a.primary_key_col列。为什么这是输出列表中包含的唯一列?
答案 0 :(得分:6)
需要PK列来查看聚集索引(假定为PK)以获取列c10和c11。这被称为"键查找"
您可以通过制作或更改非聚集索引来删除它,以便它覆盖"
试试这个
create nonclustered index ix_a_gbn on a (c12, c11) include (c10, c13, c14)