我怀疑在cte:
上执行自动join
;with data as
(
select col1, col2, …, Weighting
from maTable
some joins … (on EAV modele :( )
where ...
)
select * form data t1
left join data t2
on t1.id = t2.id
and t1.Weighting > t2.Weighting
CTE将返回所有有效数据,自联接将获得最新值。
将SQL Server
扫描maTable
两次,或将结果放入内存并将其用于加入?
执行计划显示它扫描我的索引两次......
对cpu和io影响较小的最佳方法是什么?
使用
- 临时表而不是CTE更快但使用更多的CPU和IO
- var表而不是CTE更长,并且使用更多的CPU和IO
提前致谢。