自我加入CTE

时间:2017-01-26 10:55:18

标签: tsql

我怀疑在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

提前致谢。

0 个答案:

没有答案