DÜZENLE:
Lütfen Martin'in yorumlarına bakınız:
CTE, bellekte bir tablo olarak gerçekleşmez.Bu sadece bir sorgu tanımını içine almanın bir yoludur.OP durumunda, satır içi olacak ve sadece yaptığınız gibi olacak
SELECT Column1, Column2, Column3 FROM SomeTable.Çoğu zaman önden gerçekleşmezler, bu yüzden hiç satır döndürmez.
WITH T(X) AS (SELECT NEWID())SELECT * FROM T T1 JOIN T T2 ON T1.X=T2.X, ayrıca yürütme planlarını kontrol edin.Rağmen bazen bir makara almak için planı kesmek mümkündür.Bunun için ipucu isteyen bir bağlantı maddesi var.- Martin Smith 15 Şubat'ta saat 17: 08'de
Orijinal cevap
CTE
Read more on MSDN
Bir CTE bellekte kullanılan tabloyu yaratır, ancak yalnızca onu takip eden belirli sorgu için geçerlidir.Özyinelemeyi kullanırken, bu etkili bir yapı olabilir.
Bir tablo değişkeni kullanmayı da düşünebilirsiniz.Bu kullanılırgibiBir temp tablosu kullanılır ve her bir birleşme için tekrar malzemeye ihtiyaç duyulmadan defalarca kullanılabilir.Ayrıca, şimdi birkaç kayıt tutmanız gerekiyorsa, bir sonraki seçimden sonra bir kaç kayıt daha ekleyin, başka bir işlemden sonra bir kaç kayıt daha ekleyin, sonra sadece kayıtların bir avuçını döndürün, o zaman bu çok kullanışlı İnfazdan sonra düşürülmeye gerek yok.Çoğunlukla sadece sözdizimsel şeker.Ancak, satır sayısını düşük tutarsanız, hiçbir zaman diske aktarılmaz.GörmekWhat's the difference between a temp table and table variable in SQL Server?daha fazla ayrıntı için.
Sıcaklık tablosu
Read more on MSDN - Scroll down about 40% of the way
Temp tablo tam anlamıyla diskte oluşturulan bir tablodur, sadece herkesin silinebileceğini bildiği belirli bir veritabanında.Artık ihtiyaç duyulmadığında bu tabloları imha etmek iyi bir dev'ın sorumluluğudur, ancak bir DBA da onları silebilir.
Geçici tablolar iki çeşittir: Yerel ve küresel.MS SQL Server açısından bir
#tableNameyerel atama ve
##tableNameglobal için tanım (tanımlayıcı karakteristik olarak tek veya çift # kullanımına dikkat edin).
Tablo değişkenleri veya CTE'nin yerine temp tablolarıyla kelimenin normal anlamındaki meşru tabloları olduğu için indeksleri ve benzerlerini uygulayabildiğinizi unutmayın.
Genelde temp tablolarını daha uzun veya daha büyük sorgular için ve CTE'leri veya tablo değişkenlerini daha önce küçük bir veri kümesine sahip olsaydım ve küçük bir şey için hızlıca biraz kod yazmak istemiştim.Tecrübe ve başkalarının tavsiyesi, ondan az sayıda satırın geldiği CTE'leri kullanmanız gerektiğini gösterir.Çok sayıda numaranız varsa, büyük olasılıkla temp tablosundaki indeksleme özelliğinden yararlanabilirsiniz.