繁体   English   中英

SQL Server 查询执行计划

[英]SQL Server Query execution plan

我正在尝试了解优化数据库和查询。 我有一个测试表Objednavka ,它有一个外键属性ODIS 在这个数据库中,查询像

SELECT * FROM Objednavka WHERE ODIS = 123

很频繁,所以我创建了一个这样的索引

CREATE NONCLUSTERED INDEX Objednavka_ODIS_index ON Objednavka (ODIS)

然后我查看了我提到的查询计划,这就是我所看到的:

查询计划

有人可以解释一下为什么我要并行执行Index SeekKey Lookup操作,然后使用嵌套循环加入吗? 从我的教训,我认为Index Seek ,应该执行,从而使发动机查找包含(索引)该行的位置ODIS在索引属性,那么它应该检索使用整个数据Key Lookup ,当它已经知道位置时,还是我错了?

非聚集索引具有由 SQL Server 自动添加的 PK 列。 索引查找是为您为索引列提供的值查找索引 b 树,结果是 PK 值(如果您的表是堆,则为 RID)。 如果查询的所有列都是索引列的一部分,称为覆盖索引,则查询完成,因为 SQL Server 可以从 b 树中获取所有信息。 如果需要返回索引中没有的其他列,SQL Server需要使用PK查找记录的数据,也就是key-lookup部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM