Tsql CTE上的自连接

Tsql CTE上的自连接,tsql,Tsql,我对在cte上执行自动连接有疑问: ;以数据为基础 选择列1、列2、…、权重 来自maTable EAV modele上的某些连接: 哪里 选择*表单数据t1 左连接数据t2 在t1.id=t2.id上 t1.权重>t2.权重 CTE将返回所有有效数据,自联接将获取最新值 SQL Server会扫描maTable两次,还是将结果放入内存并用于联接 执行计划显示它扫描我的索引两次 在对cpu和io影响较小的情况下,最好的方法是什么 使用 -临时表代替CTE更快,但使用更多的CPU和IO -var表

我对在cte上执行自动连接有疑问:

;以数据为基础 选择列1、列2、…、权重 来自maTable EAV modele上的某些连接: 哪里 选择*表单数据t1 左连接数据t2 在t1.id=t2.id上 t1.权重>t2.权重 CTE将返回所有有效数据,自联接将获取最新值

SQL Server会扫描maTable两次,还是将结果放入内存并用于联接

执行计划显示它扫描我的索引两次

在对cpu和io影响较小的情况下,最好的方法是什么

使用 -临时表代替CTE更快,但使用更多的CPU和IO -var表代替CTE更长,并且使用更多的CPU和IO


提前感谢。

Ok似乎cte查询正在重新运行:在对cpu和io影响较小的情况下,最好的方法是什么?这完全取决于你实际想做什么。您当前的脚本基本上毫无意义。。。