我正在尝试调试执行缓慢的查询。它有几种with表达方式,分别是left joined. 当我删除连接时,速度会大大加快。
原始查询:
;with CTE as
(
Select *
from table1
)
SELECT *
FROM table2
LEFT JOIN CTE ON table2.CTEID
Run Code Online (Sandbox Code Playgroud)
更好的查询性能:
;with CTE as
(
Select *
from table1
)
SELECT *
FROM table2
Run Code Online (Sandbox Code Playgroud)
上面是因为没有加入所以不执行CTE,还是不管怎样都执行?
我的猜测可能不是——查询优化器非常聪明,不会执行不必要的东西。每个查询都是不同的,查询优化器使用有关实际数据的统计信息来决定如何评估它,因此唯一确定的方法是让 SQL Server 告诉您它如何评估您的查询。
为此,请在 SQL Server Management Studio 中使用“包括实际执行计划”执行查询,您将清楚地看到它如何评估查询。
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |