这个问题在这里已有答案:
下面有两个查询,提供相同的结果,唯一的区别是第一个查询带有子查询,第二个查询带有公用表表达式 . 问题是这两种方式(子查询和CTE)之间的“性能”差异是什么?
从我所读到的,当你想重用查询时,CTE会更好,但除此之外,我还没有看到这两种方式之间的任何其他优点或缺点 .
SELECT col1,col2,col3,tt.c1,tt.c2.tt.c3
FROM table1 t1
INNER JOIN (SELECT t2.col1 as c1 ,t2.col2 as c2 ,t3.col3 as c3
FROM table2 t2
INNER JOIN table3 t3 ON t2.col1= t3.col1
WHERE t3.col1>100 ) tt ON t1.col1= tt.col1
;WITH CTE(
SELECT t2.col1 as c1 ,t2.col2 as c2 ,t3.col3 as c3
FROM table2 t2
INNER JOIN table3 t3 ON t2.col1= t3.col1
WHERE t3.col1>100
)
SELECT col1,col2,col3,tt.c1,tt.c2.tt.c3
FROM table1 t1
INNER JOIN CTE tt ON t1.col1= tt.col1
1 回答
在这种情况下,使用它,它基本上是相同的 . 您只能使用CTE来帮助提高可读性 .