首页 文章

公用表表达式或子查询? [重复]

提问于
浏览
0

这个问题在这里已有答案:

下面有两个查询,提供相同的结果,唯一的区别是第一个查询带有子查询,第二个查询带有公用表表达式 . 问题是这两种方式(子查询和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 回答

  • 0

    在这种情况下,使用它,它基本上是相同的 . 您只能使用CTE来帮助提高可读性 .

相关问题