我有以下查询。它运行缓慢,但在没有 PK 时会获得一些价值hugeTable
。估计的执行计划显示一半的成本是“RID Lookup (Heap) [hugeTable] 51%”。
我添加了一个 PKhugeTable
并创建了一个索引,涵盖了枢轴子查询的所有列。那么80%的成本就是封面索引上的“Index Spool(Eager Spool)”。(它首先进行了索引扫描(4%))。
如何避免 hugeTable 上的“Index spool”?
select ..., [...], [...], ...
from ....
T1 ...
outer apply (
select k1, k2, [...], [...], ...
from (
select k1, k2, col, value
from hugeTable
where k1 = T1.K1 and k2 = T1.K2
) p pivot (sum(value) for col in ([...], [...], ...)) as pvt
) a pvt