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
爲什麼不運行它們並查看執行計劃?這是瞭解性能差異所需要的。 –
標記3個不同的數據庫引擎不會幫助。無論如何,這個問題太廣泛了。 – DavidG
沒有區別。這裏沒什麼好看的,離開。 – Hogan