Rezumat
Această actualizare introduce un nou argument indiciu de interogare, USE HINT, care vă permite să conduceți optimizatorul de interogări fără acreditări elevate sau fără a fi membru al rolului de server sysadmin. Sintaxa acestui nou indiciu de interogare seamănă cu următoarea:
<query_hint > ::=
{
USE HINT(N'key' [ [, ]...n ])
}
Această actualizare introduce, de asemenea, următoarele opțiuni de indiciu care pot fi utilizate cu argumentul USE HINT.
| Opțiune | Semnalizare de urmărire echivalentă | Descriere | Se aplică la |
|---|---|---|---|
| ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS | TF 9476 | Determină ca SQL Server să genereze un plan de interogare utilizând ipoteza de izolare simplă în locul ipotezei implicite de conținut de bază pentru asocieri, sub modelul de estimare a cardinalității pentru optimizarea interogărilor din SQL Server 2014 (12.x) sau o versiune mai recentă. | |
| ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES | TF 4137 | Determină SQL Server să genereze un plan utilizând o selectivitate minimă atunci când estimează predicatele AND pentru filtre pentru a ține cont de corelare. Acest nume de sugestie este paralel cu semnalizarea de urmărire 4137 atunci când este utilizat cu modelul de estimare a cardinalității din SQL Server 2012 (11.x) și versiunile anterioare și are un efect similar atunci când semnalizarea de urmărire 9471 este utilizată cu modelul de estimare a cardinalității de SQL Server 2014 (12.x) sau o versiune ulterioară. | |
| DISABLE_BATCH_MODE_ADAPTIVE_JOINS | Dezactivează asocierile adaptive în modul batch. | începând din SQL Server 2017 | |
| DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK | Dezactivează feedback-ul de acordare a memoriei pentru modul batch. | începând din SQL Server 2017 | |
| DISABLE_DEFERRED_COMPILATION_TV | Dezactivează compilarea amânată a variabilelor de tabel. | începând din SQL Server 2019 | |
| DISABLE_INTERLEAVED_EXECUTION_TVF | Dezactivează executarea intercalată pentru funcții cu valori de tabel cu instrucțiuni multiple. | începând din SQL Server 2017 | |
| DISABLE_OPTIMIZED_NESTED_LOOP | TF 2340 | Instruiește procesorul de interogări să nu utilizeze o operațiune de sortare (sortare lot) pentru asocieri de bucle imbricate optimizate atunci când generează un plan de interogare. | |
| DISABLE_OPTIMIZER_ROWGOAL | TF 4138 | Determină SQL Server să genereze un plan care nu utilizează modificări ale obiectivelor rândurilor cu interogările care conțin aceste cuvinte cheie:
|
|
| DISABLE_PARAMETER_SNIFFING | TF 4136 | Instruiește instrumentul de optimizare a interogărilor să utilizeze distribuția medie a datelor în timp ce compilați o interogare cu unul sau mai mulți parametri. Această instrucțiune face planul de interogare independent de valoarea parametrului care a fost utilizată prima dată când a fost compilată interogarea. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date PARAMETER_SNIFFING=OFF. | |
| DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK | Dezactivează feedbackul de acordare a memoriei în modul rând. | începând din SQL Server 2019 | |
| DISABLE_TSQL_SCALAR_UDF_INLINING | Dezactivează inlinizarea UDF scalară. | începând din SQL Server 2019 | |
| DISALLOW_BATCH_MODE | Dezactivează executarea în modul de lot. | începând din SQL Server 2019 | |
| ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS | TF 4139 | Activează statistici rapide generate automat (modificare histogramă) pentru orice coloană de index inițială pentru care este necesară o estimare a cardinalității. Histograma utilizată pentru a estima cardinalitatea va fi ajustată la momentul compilării interogării pentru a ține cont de valoarea maximă sau minimă reală a acestei coloane. | |
| ENABLE_QUERY_OPTIMIZER_HOTFIXES | TF 4199 | Activează remedierile rapide ale instrumentului de optimizare a interogărilor (modificări lansate în actualizările cumulative și pachetele Service Pack SQL Server). Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date QUERY_OPTIMIZER_HOTFIXES=ON. | |
| FORCE_DEFAULT_CARDINALITY_ESTIMATION | TF 9481 | Forțează instrumentul de optimizare a interogărilor să utilizeze modelul de estimare a cardinalității care corespunde nivelului de compatibilitate al bazei de date curente. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date LEGACY_CARDINALITY_ESTIMATION=ON. | |
| FORCE_LEGACY_CARDINALITY_ESTIMATION | TF 9481 | Impune instrumentului de optimizare a interogărilor să utilizeze modelul de estimare a cardinalității SQL Server 2012 (11.x) și versiunile anterioare. Utilizați acest indiciu pentru a înlocui setarea de configurare prin domeniu bază de date LEGACY_CARDINALITY_ESTIMATION=ON. | |
| QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n | Forțează comportamentul optimizatorului de interogare la nivel de interogare. Acest comportament se întâmplă ca și cum interogarea ar fi compilată cu nivelul de compatibilitate al bazei de date n, unde n este un nivel de compatibilitate acceptat al bazei de date. Consultați sys.dm_exec_valid_use_hints pentru o listă de valori acceptate în prezent pentru n. | începând din SQL Server 2017 (14.x) CU10 |
Pentru mai multe informații, consultați Indicii (Transact-SQL) - Interogare.
Mai multe informații
Această actualizare este inclusă în pachetul Service Pack 1 pentru SQL Server 2016.
Despre compilările SQL Server 2016
Fiecare versiune nouă pentru SQL Server 2016 conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu compilarea anterioară. Vă recomandăm să instalați cea mai recentă versiune pentru SQL Server 2016.
Scenariile în care trebuie menționat comportamentul optimizatorului de interogare (QO) SQL Server sunt destul de obișnuite și, în mod tradițional, sunt tratate utilizând mai multe semnalizări de urmărire (documentate și nedocumentate). Totuși, atunci când semnalizările de urmărire sunt setate la nivel global, acestea pot avea un efect negativ asupra altor soluții de lucru. În plus, activarea lor per sesiune nu este practică cu aplicațiile existente, iar activarea lor per interogare cu OPTION QUERYTRACEON necesită apartenența la rolul de server fix sysadmin. (Deși puteți evita acest comportament utilizând un ghid de plan sau o procedură stocată, acreditările elevate sunt în continuare necesare.)
Semnalizările de urmărire sunt utilizate pentru a seta temporar anumite caracteristici ale serverului sau pentru a dezactiva un anumit comportament. Acestea pot fi dificil de gestionat și de înțeles.
Pentru informații despre semnalizările de urmărire, consultați subiectul Semnalizările de urmărire (Transact-SQL) de pe site-ul web Rețea Microsoft pentru dezvoltatori (MSDN).
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.