Evet eğer sen:
- SQL Server 2014 veya sonraki sürümlerini çalıştırıyorsanız; ve
- sorguyu 176 aktif izleme bayrağıyla çalıştırabilir ; ve
- hesaplanan sütun
PERSISTED
Spesifik olarak, en azından aşağıdaki versiyonlar gereklidir :
- SQL Server 2016 SP1 için Toplu Güncelleştirme 2
- SQL Server 2016 RTM için Toplu Güncelleştirme 4
- SQL Server 2014 SP2 için Toplu Güncelleştirme 6
AMA bu düzeltmelerde ortaya konan bir hatayı önlemek için (ref için 2014 ve 2016 ve 2017 için ), bunun yerine aşağıdakileri uygulayın:
İzleme bayrağı, başlatma –T
seçeneği olarak, hem genel hem de oturum kapsamını kullanarak DBCC TRACEON
ve sorgu başına OPTION (QUERYTRACEON)
veya bir plan kılavuzu ile etkilidir .
İzleme bayrağı 176, kalıcı bilgisayar sütun genişlemesini önler.
Bir sorgu derlerken gerçekleştirilen ilk meta veri yüklemesi, yalnızca doğrudan başvurulanları değil tüm sütunları getirir. Bu, hesaplanan tüm sütun tanımlarını eşleştirme için kullanılabilir kılar, bu genellikle iyi bir şeydir.
Talihsiz bir yan etki olarak, yüklenen (hesaplanan) sütunlardan biri skaler kullanıcı tanımlı bir işlev kullanıyorsa, varlığı hesaplanan sütun gerçekte kullanılmadığında bile tüm sorgu için paralelliğe izin vermez .
Izleme bayrağı 176, sütun devam ederse, tanım yüklenmeden (genişleme atlandığından) bu konuda yardımcı olur. Bu şekilde, derleme sorgu ağacında skalar kullanıcı tanımlı bir işlev hiçbir zaman bulunmaz, bu nedenle paralellik devre dışı bırakılmaz.
İzleme bayrağının (176) ana dezavantajı (yalnızca hafifçe belgelenmesi dışında), kalıcı ifadeli hesaplanmış sütunlarla eşleşen sorgu ifadesini de engellemesidir: Sorgu, kalıcı bir hesaplanmış sütuna uyan bir ifade içeriyorsa, izleme bayrağı (176) ifadenin yerine geçmesini önleyecektir. hesaplanan sütuna bir başvuru.
Daha fazla ayrıntı için, Düzgün Kalıcı Hesaplanan Sütunlar adlı SQLPerformance.com makaleme bakın .
Soru, hesaplanan sütun ve skaler işlevi kullanarak değerleri teşvik etmenin bir alternatifi olarak XML'den bahsettiği için, Seçici XML Dizinlerinde yazdığınız gibi, Seçici XML Dizini'ni de kullanabilirsiniz .