2008-09-10 29 views
3

Bazı SQL'in performansını iyileştirmeye çalışıyorum, şu anda CTE'ler komut dosyasında birden çok kez kullanılıyor ve başvuruyor. Bunun yerine bir tablo değişkenini kullanarak geliştirmeler alabilir miyim? (Kod fonksiyonlar içerdikçe geçici bir tablo kullanamazsınız).CTE kullanmanın avantajları/dezavantajları nelerdir?

+1

Bkz Craig Freedman ayrıntılı bir açıklama [bağlantı metni] (http://blogs.msdn.com/craigfr/archive/2007/10/18/ctes-common-table-expressions.aspx) –

cevap

6

Gerçekten performans testi gerekecek - hayır Evet/Hayır cevabı yoktur. Yukarıdaki Andy Living'in gönderdiği bağlantıya göre, bir CTE bir sorgu veya alt sorgu için sadece kısa yoldur. Eğer bir tablo değişkeni doldurmak ve daha sonra bundan select/katılmak eğer

aynı işlevde iki kez ya da daha fazla o aradığınız varsa, daha iyi performans elde edebilirsiniz. Ancak, tablo değişkenleri bir yer kapladığı için ve dizinlere/istatistiklere sahip olmadığından (tablo değişkeninde bildirilen herhangi bir birincil anahtar dışında), hangisinin daha hızlı olacağının hiçbir yolu yoktur.

İkisi maliyetleri ve tasarruf var ve en iyi yolu onlar çekmek verilere ve ne onunla ne bağlıdır hangi. Durumunuzda ve çeşitli koşullar altında hız testi yaptıktan sonra - Bazı fonksiyonlar CTE kullanıyordu ve diğerleri tablo değişkenlerini kullanıyordu. SQL Server için

2

Muhtemelen hayır. CTE'ler özellikle ağaç yapıları için veri sorgulamada iyidir.

İlgili konular