2014-10-09 102 views
0

我想知道在查詢中如何處理CTE。對於VIEW,我知道它將查詢與主查詢合併,然後優化器解析並構建合併查詢的計劃。這就是爲什麼有時不建議使用VIEWS的原因,因爲如果他們有許多表添加到主查詢本身的表中,它們可能會導致性能下降。處理MSSQL非遞歸CTE

是否以相同的方式處理CTE?

+0

這可能有所幫助:http://explainextended.com/2009/11/18/sql-server-are-the-recursive-ctes-really-set-based/ – 2014-10-09 10:32:11

+0

感謝您的鏈接。但它只討論遞歸CTE。我想知道如何處理非遞歸CTE。 – Papal 2014-10-10 09:40:01

回答

0

我設置了一個SQL小提琴,它演示了簡單情況下執行計劃如何相同(http://www.sqlfiddle.com/#!6/a1ea2/1/0)。

通常,對於您的具體情況,沒有更多細節,非遞歸CTE的行爲與Views或Sub-Queries相同。這假定您不是將索引編入索引,這會導致統計信息被存儲,並在正確的非聚簇索引中提供查詢性能方面的優勢。