0
我想知道在查詢中如何處理CTE。對於VIEW,我知道它將查詢與主查詢合併,然後優化器解析並構建合併查詢的計劃。這就是爲什麼有時不建議使用VIEWS的原因,因爲如果他們有許多表添加到主查詢本身的表中,它們可能會導致性能下降。處理MSSQL非遞歸CTE
是否以相同的方式處理CTE?
我想知道在查詢中如何處理CTE。對於VIEW,我知道它將查詢與主查詢合併,然後優化器解析並構建合併查詢的計劃。這就是爲什麼有時不建議使用VIEWS的原因,因爲如果他們有許多表添加到主查詢本身的表中,它們可能會導致性能下降。處理MSSQL非遞歸CTE
是否以相同的方式處理CTE?
我設置了一個SQL小提琴,它演示了簡單情況下執行計劃如何相同(http://www.sqlfiddle.com/#!6/a1ea2/1/0)。
通常,對於您的具體情況,沒有更多細節,非遞歸CTE的行爲與Views或Sub-Queries相同。這假定您不是將索引編入索引,這會導致統計信息被存儲,並在正確的非聚簇索引中提供查詢性能方面的優勢。
這可能有所幫助:http://explainextended.com/2009/11/18/sql-server-are-the-recursive-ctes-really-set-based/ – 2014-10-09 10:32:11
感謝您的鏈接。但它只討論遞歸CTE。我想知道如何處理非遞歸CTE。 – Papal 2014-10-10 09:40:01