我正在研究优化 SQL Server 2016 中的一些查询,我遇到了这种我无法理解的情况。
此特定查询试图获取 dbo.Objects 表中两组对象的名称。为此,查询计划显示 SQL 在检索聚集索引后正在使用嵌套循环内连接中的键查找。但是,对较大的对象集进行键查找的估计成本低于对较小对象集的键查找。它们都在同一张表上运行,使用相同的聚集索引进行查找,使用相同的谓词,所以除了行号之外,我看不出还有什么会影响他们的成本估算,但这似乎有相反的结果。
我可以在属性中找到的唯一区别是估计/实际执行,以及估计的重新绑定/倒带。较小的集合估计有 5854 次重新绑定并且没有倒带,而较大的集合估计有 1069.66 次重新绑定和 22356.9 次倒带。但是,我不知道这些在 Key Lookups 的上下文中是什么意思
以下是每个操作的工具提示,以显示我在说什么。
为什么这些运营商可能有如此不同的估计运营商计数?