Mengingat pengoptimal tidak dapat mengambil semua waktu yang diperlukan (harus meminimalkan waktu eksekusi dan tidak berkontribusi untuk itu) untuk mengeksplorasi semua rencana eksekusi yang mungkin kadang-kadang terputus.
Saya bertanya-tanya apakah ini dapat diganti sehingga Anda dapat memberikan pengoptimal setiap saat dalam kebutuhan (atau jumlah milidetik tertentu).
Saya tidak memiliki kebutuhan untuk ini (atm) tetapi saya dapat membayangkan skenario di mana query yang kompleks dieksekusi dalam loop yang ketat dan Anda ingin membuat rencana optimal dan menyimpannya terlebih dahulu.
Tentu saja Anda memiliki loop ketat Anda harus menulis ulang kueri sehingga hilang tetapi tetap bersamaku.
Ini lebih merupakan pertanyaan karena penasaran dan juga untuk melihat apakah kadang-kadang ada perbedaan antara optimasi hubung singkat dan penuh.
Ternyata Anda dapat memberi pengoptimal lebih banyak waktu dengan jejak bendera 2301. Bukan itu yang saya tanyakan tetapi mendekati.
Informasi terbaik yang saya temukan dalam hal ini adalah di Query Processor Extensions Modeling di SQL Server 2005 SP1 oleh Ian Jose.
Gunakan bendera jejak ini dengan hati-hati! Tapi itu bisa berguna ketika membuat rencana yang lebih baik. Lihat juga:
- Artikel dengan tag "tingkat optimisasi" oleh Grant Fritchey.
- Sebelum Anda memutakhirkan ke SQL Server 2008 ... oleh Brent Ozar.
- Opsi penyetelan untuk SQL Server saat berjalan dalam beban kerja berkinerja tinggi oleh Dukungan Microsoft.
Saya sedang memikirkan pertanyaan dengan banyak gabungan di mana ruang solusi untuk pesanan gabungan meledak secara eksponensial. Heuristik yang digunakan SQL Server cukup bagus tetapi saya bertanya-tanya apakah optimizer akan mengusulkan urutan yang berbeda jika memiliki lebih banyak waktu (dalam kisaran detik atau bahkan menit).