Ringkasan
Pembaruan ini memperkenalkan argumen petunjuk kueri baru, gunakan hint, yang memungkinkan Anda mendorong Pengoptimal kueri tanpa kredensial yang ditinggikan atau tanpa menjadi anggota peran server sysadmin. Sintaks dari petunjuk kueri baru ini menyerupai yang berikut ini:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Pembaruan ini juga memperkenalkan opsi petunjuk berikut yang bisa digunakan dengan argumen HINT petunjuk .
Pilihannya |
Bendera pelacakan yang setara |
Deskripsi |
Berlaku untuk |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
Menyebabkan SQL Server membuat rencana kueri menggunakan asumsi penahanan sederhana dan bukan asumsi penahanan dasar default untuk gabungan, di bawah Pengoptimal kueri Model perkiraan cardinality dari SQL Server 2014 (12. x) atau yang lebih baru. |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Menyebabkan SQL Server membuat rencana dengan menggunakan selektivitas minimum saat memperkirakan dan predikat untuk memfilter untuk memperhitungkan korelasi. Nama petunjuk ini sejajar dengan Bendera pelacakan 4137 ketika digunakan dengan model perkiraan cardinalitas dari SQL server 2012 (11. x) dan versi yang lebih lama, dan memiliki efek yang sama ketika bendera pelacakan 9471 digunakan dengan model perkiraan Cardinalitas dari SQL Server 2014 (12. x) atau lebih tinggi. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Menonaktifkan gabungan mode batch adaptif. |
mulai di SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Menonaktifkan memori mode batch Berikan umpan balik. |
mulai di SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Menonaktifkan kompilasi ditunda variabel tabel. |
mulai di SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Menonaktifkan eksekusi interleaving untuk fungsi bernilai tabel multi-pernyataan. |
mulai di SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Memerintahkan prosesor kueri agar tidak menggunakan operasi pengurutan (urutan batch) untuk gabungan pengulangan bertumpuk yang dioptimalkan saat membuat rencana kueri. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Menyebabkan SQL Server membuat rencana yang tidak menggunakan modifikasi tujuan baris dengan kueri yang berisi kata kunci ini:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Memerintahkan Pengoptimal kueri untuk menggunakan distribusi data rata-rata saat menyusun kueri dengan satu atau beberapa parameter. Instruksi ini membuat rencana kueri mandiri pada nilai parameter yang pertama kali digunakan saat kueri dikompilasi. Gunakan petunjuk ini untuk mengesampingkan pengaturan konfigurasi database Scophe PARAMETER_SNIFFING = off. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Menonaktifkan memori mode baris Berikan umpan balik. |
mulai di SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Menonaktifkan inlining skalar. |
mulai di SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Menonaktifkan eksekusi mode batch. |
mulai di SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Memungkinkan Statistik cepat yang dihasilkan secara otomatis (amandemen histogram) untuk setiap kolom indeks terdepan yang diperlukan perkiraan cardinality. Histogram yang digunakan untuk memperkirakan cardinalitas akan disesuaikan pada waktu kompilasi kueri untuk memperhitungkan nilai maksimum atau minimum kolom ini. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Memungkinkan hotfix Pengoptimal kueri (perubahan yang dirilis dalam pembaruan kumulatif SQL Server dan paket layanan). Gunakan petunjuk ini untuk menimpa Pengaturan konfigurasi lingkup database QUERY_OPTIMIZER_HOTFIXES = aktif. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Memaksa Pengoptimal kueri untuk digunakan Model estimasi cardinalitas yang sesuai dengan tingkat kompatibilitas database saat ini. Gunakan petunjuk ini untuk menimpa Pengaturan konfigurasi lingkup database LEGACY_CARDINALITY_ESTIMATION = aktif. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Memaksa Pengoptimal kueri untuk digunakan Model perkiraan cardinality dari SQL Server 2012 (11. x) dan versi yang lebih lama. Gunakan petunjuk ini untuk mengesampingkan pengaturan konfigurasi database Scophe LEGACY_CARDINALITY_ESTIMATION = on. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Memaksa perilaku Pengoptimal kueri pada tingkat kueri. Perilaku ini terjadi seperti jika kueri dikompilasi dengan tingkat kompatibilitas database n, di mana n adalah tingkat kompatibilitas database yang didukung. Rujuk kesys.dm_exec_valid_use_hints untuk daftar nilai yang saat ini didukung untuk n. |
mulai di SQL Server 2017 (14. x) CU10 |
Untuk informasi selengkapnya, lihat petunjuk (Transact-SQL)-kueri.
Informasi Selengkapnya
Pembaruan ini disertakan dalam Paket Layanan 1 untuk SQL Server 2016.
Setiap Build baru untuk SQL Server 2016 berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan Build sebelumnya. Kami menyarankan agar Anda menginstal Build terbaru untuk SQL Server 2016.
Skenario di mana perilaku SQL Server query Optimizer (QO) harus hinted cukup umum, dan secara tradisional mereka ditangani dengan menggunakan beberapa bendera pelacakan (didokumentasikan dan tidak terdokumentasikan). Namun, ketika bendera pelacakan diatur secara global, mereka mungkin memiliki efek buruk pada beban kerja lainnya. Selain itu, memungkinkan mereka per-sesi tidak praktis dengan aplikasi yang sudah ada, dan mengaktifkannya per-kueri dengan opsi QUERYTRACEON memerlukan keanggotaan dalam peran server tetap sysadmin. (Meskipun Anda bisa mengatasi perilaku ini dengan menggunakan panduan rencana atau prosedur yang disimpan, kredensial yang ditinggikan masih diperlukan.) Bendera pelacakan digunakan untuk sementara waktu mengatur karakteristik server tertentu atau untuk menonaktifkan perilaku tertentu, mereka mungkin sulit untuk dikelola dan dipahami. Untuk informasi tentang bendera pelacakan, lihat topik bendera pelacakan (Transact-SQL) di situs web Microsoft Developer Network (MSDN).
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.