Biraz araştırma yaptıktan sonra, bu soruyu cevaplamak için Microsoft'un belgelerinden somut ve tatmin edici bir kaynak bulamadım. Adhoc / ad-hoc / ad hoc'un birçok iyi üçüncü taraf açıklaması ve tanımı var, ancak bu sorunun özgüllüğü için kaynağa yakın olan birinin ideal olduğunu düşünüyorum.
Bu SO yazısı gibi genel (ancak yine de doğru) tanımları taşımak (teşekkürler SqlWorldWide), belgelerin konuyla ilgili söylediklerine bakarsak, tanımın yürütme sayısına dayanarak bahsettiklerinizle aynı fikirde olur , Gerçeği alabileceğimiz noktaya kadar düşünüyorum.
Geçici iş akışları için optimizasyon makalesinde ,
Bu seçenek 1 olarak ayarlandığında, tam bir derlenmiş plan yerine bir toplu iş ilk kez derlendiğinde, Veritabanı Altyapısı küçük bir derlenmiş plan saplama saklar. Bu, plan önbelleğinin yeniden kullanılmayan derlenmiş planlarla dolmasına izin vermeyerek bellek baskısını hafifletmeye yardımcı olur. Derlenmiş plan saplaması, Veritabanı Motorunun bu geçici grubun daha önce derlendiğini, ancak yalnızca derlenmiş bir plan saplamasını sakladığını tanımasına izin verir, bu nedenle bu toplu işlem tekrar çağrıldığında (derlendi veya yürütüldüğünde), Veritabanı Motoru toplu işlemi derler ... ve derlenen planın tamamını plan önbelleğine ekler.
Dolayısıyla, geçici sorgu sunucusu yapılandırma seçeneği, ad hoc'un tanımı olarak tek bir yürütmenin tanımını da kullanır. Sorgu yürütülmeye devam ederse ve aynı planı oluşturursa, artık bu şekilde ele alınmaz.
Sorgu Deposu için En İyi Uygulamalar makalesi de bununla uyumludur,
Farklı query_hash değerlerinin sayısını sys.query_store_query'deki toplam girdi sayısı ile karşılaştırın. Oran 1'e yakınsa, geçici iş yükünüz farklı sorgular oluşturur.
Bu, elbette, önceden saklı yordamlar olarak kullanılmayan, parametreleştirilmiş vb.
Tüm bunlara dayanarak, bir sorgunun aşağıdaki durumlarda geçici olarak ele alındığını söyleyebiliriz:
- Parametrelendirilmemiş
- Programlı olarak veritabanında saklanmaz (saklanan proc, işlev, tetikleyici vb.)
- Aynı sorgu yalnızca bir kez yürütülür VEYA Aynı sorgu birden çok kez yürütülür, ancak sonraki her yürütme için farklı bir sorgu planı oluşturur.