如果不使用SQL Server,是否使用CTE表达式



我正在尝试调试性能缓慢的查询。它具有几种with表达式,即left joined。当我删除连接时,它会大大加快。

原始查询:

;with CTE as
(
    Select * 
    from table1
)  
SELECT * 
FROM table2
LEFT JOIN CTE ON table2.CTEID

更好地执行查询:

;with CTE as
(
     Select * 
     from table1
) 
SELECT * 
FROM table2

在上面,它是否没有执行CTE,因为它没有连接,还是执行它,无论它是否执行?

我的猜测可能不是 - 查询优化器对于不执行不必要的内容非常聪明。每个查询都是不同的,查询优化器使用有关您的实际数据的统计信息来决定如何评估它,因此确定知道的唯一方法是让SQL Server告诉您如何评估查询。

要执行此操作,请在SQL Server Management Studio中执行您的查询,并使用"包括实际执行计划",您将清楚地看到它如何评估查询。

最新更新