我正在嘗試調試執行速度很慢的查詢。它有幾個with
表達式,它們是left joined
。當我刪除連接時,它會顯着加速。SQL Server是否執行CTE表達式(如果未使用)?
原始查詢:
;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,因爲它沒有加入,或者不管它執行什麼?
實際查詢如何?除了一句話之外,我們無法提供很多幫助。 「with」是您如何定義公用表格表達式。這不是一個變量。 –
我想這就是我困惑的地方。當你使用它時,它實際上在表達式內部執行查詢,還是在調用它時執行查詢? –
這是一個內聯視圖,它不被調用。它是查詢的一部分。 –