Salt la conținutul principal
Asistență
Conectare

KB3189813-Update introduce argumentul sugestie interogare de sugestie în SQL Server 2016

Rezumat

Această actualizare introduce un nou argument sugestie pentru interogare, Utilizați hint, care vă permite să conduceți Optimizatorul de interogare fără acreditări ridicate sau fără să fiți membru al rolului serverului de administrator. Sintaxa acestui nou indiciu de interogare seamănă cu următorul:

<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}

Această actualizare introduce, de asemenea, următoarele opțiuni de sugestie care pot fi utilizate cu argumentul utilizare sugestie .

Opțiune

Semnalizator de urmărire echivalent

Descriere

Se aplică la

ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS

TF 9476

Provoacă SQL Server pentru a genera un plan de interogare utilizând ipoteza de reținere simplă în loc de ipoteza implicită de bază pentru asocieri, sub Optimizatorul de interogare Modelul de estimare a cardinalității SQL Server 2014 (12. x) sau mai nou.

ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES

TF 4137

Provoacă SQL Server pentru a genera un plan utilizând selectivitate minimă atunci când estimați și Predicați pentru filtre pentru a ține cont de corelare. Acest nume de sugestie este paralel cu Trace Flag 4137 atunci când este utilizat cu modelul de estimare cardinality de SQL server 2012 (11. x) și versiuni anterioare, și are efect similar atunci când Trace Flag 9471 este utilizat cu modelul de estimare cardinality de SQL Server 2014 (12. x) sau o versiune mai recentă.

DISABLE_BATCH_MODE_ADAPTIVE_JOINS

Dezactivează asocierile adaptabile la modul lot.

începând cu SQL Server 2017

DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK

Dezactivează modul de acordare a memoriei din modul de lot.

începând cu SQL Server 2017

DISABLE_DEFERRED_COMPILATION_TV

Dezactivează compilarea variabilă a tabelului amânată.

începând cu SQL Server 2019

DISABLE_INTERLEAVED_EXECUTION_TVF

Dezactivează executarea Interleaved pentru funcțiile de tabel cu mai multe declarații.

începând cu SQL Server 2017

DISABLE_OPTIMIZED_NESTED_LOOP

TF 2340

Instruiește procesorul de interogare să nu utilizeze o operațiune de sortare (sortarea lotului) pentru asocierile de buclă imbricată optimizate atunci când generează un plan de interogare.

DISABLE_OPTIMIZER_ROWGOAL

TF 4138

Provoacă SQL Server pentru a genera un plan care nu utilizează modificările de obiectiv de rând cu interogări care conțin aceste cuvinte cheie:

  • TOP

  • OPȚIUNE (FAST N)

  • ÎN

  • Există

DISABLE_PARAMETER_SNIFFING

TF 4136

Instruiește Optimizatorul de interogare să utilizeze distribuția medie de date în timp ce compilează o interogare cu unul sau mai mulți parametri. Această instrucțiune face ca planul de interogare să fie independent de valoarea parametrului care a fost utilizată pentru prima dată când s-a compilat interogarea. Utilizați acest indiciu pentru a anula setarea de configurare a domeniului bazei de date PARAMETER_SNIFFING = dezactivat.

DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK

Dezactivează feedbackul privind acordarea memoriei din modul de rând.

începând cu SQL Server 2019

DISABLE_TSQL_SCALAR_UDF_INLINING

Dezactivează inlinierea UDF scalară.

începând cu SQL Server 2019

DISALLOW_BATCH_MODE

Dezactivează execuția modului de lot.

începând cu SQL Server 2019

ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS

TF 4139

Activează statisticile rapide generate automat (modificarea histogramei) pentru orice coloană de indexare de vârf pentru care este necesară estimarea cardinalității. Histograma utilizată pentru estimarea cardinalității va fi ajustată la timpul de compilare a interogării pentru a ține cont de valoarea maximă sau minimă efectivă a acestei coloane.

ENABLE_QUERY_OPTIMIZER_HOTFIXES

TF 4199

Activează remedierile rapide ale interogărilor (modificările lansate în actualizările cumulative SQL Server și pachetele Service Pack). Utilizați acest indiciu pentru a anula Setarea de configurare a bazelor de date QUERY_OPTIMIZER_HOTFIXES = activat.

FORCE_DEFAULT_CARDINALITY_ESTIMATION

TF 9481

Obligă Optimizatorul de interogare să utilizeze Modelul de estimare a cardinalității care corespunde nivelului de compatibilitate al bazei de date curente. Utilizați acest indiciu pentru a anula Setarea de configurare a bazei de date LEGACY_CARDINALITY_ESTIMATION = activat.

FORCE_LEGACY_CARDINALITY_ESTIMATION

TF 9481

Obligă Optimizatorul de interogare să utilizeze Modelul de estimare a cardinalității SQL Server 2012 (11. x) și versiunile anterioare. Utilizați acest indiciu pentru a anula setarea de configurare a domeniului bazei de date LEGACY_CARDINALITY_ESTIMATION = activat.

QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n

Forțează comportamentul de optimizare a interogărilor la un nivel de interogare. Acest comportament se întâmplă ca și cum interogarea a fost compilată cu nivelul de compatibilitate al bazei de date n, unde n este un nivel de compatibilitate a bazei de date acceptate. Consultațisys.dm_exec_valid_use_hints pentru o listă de valori acceptate în prezent pentru n.

pornirea în SQL Server 2017 (14. x) CU10

Pentru mai multe informații, consultați sugestii (Transact-SQL)-Query.

Mai multe informații

Această actualizare este inclusă în pachetul Service Pack 1 pentru SQL Server 2016.

 

Fiecare compilare nouă pentru SQL Server 2016 conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în compilarea anterioară. Vă recomandăm să instalați cea mai recentă versiune pentru SQL Server 2016.

Scenariile în care comportamentul SQL Server Query Optimizer (QO) trebuie să fie sugerate sunt destul de comune și, în mod tradițional, sunt abordate utilizând mai multe semnalizări de urmărire (documentate și nedocumentate). Totuși, când semnalizările de urmărire sunt setate la nivel global, acestea pot avea un efect advers asupra altor încărcări de lucru. În plus, activarea lor per sesiune nu este practică cu aplicațiile existente și activarea lor per interogare cu opțiunea QUERYTRACEON necesită apartenență la rolul de server fix de administrator. (Deși puteți rezolva acest comportament utilizând un ghid de plan sau o procedură stocată, acreditările ridicate sunt încă necesare.) Semnalizările de urmărire sunt utilizate pentru a seta temporar anumite caracteristici de server sau pentru a opri un anumit comportament, poate fi dificil să le gestionați și să le înțelegeți. Pentru informații despre semnalizările de urmărire, consultați subiectul urmărire steaguri (Transact-SQL) pe site-ul Web Microsoft Developer Network (MSDN).

Referințe

Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.

Aveți nevoie de ajutor suplimentar?

Extindeți-vă competențele
Explorați instruirea
Fiți primul care obține noile caracteristici
Alăturați-vă la Microsoft Insider

V-a fost de ajutor această informație?

Cât de mulțumit sunteți de calitatea traducerii?

Ce v-a afectat experiența?

Aveți feedback suplimentar? (Opțional)

Vă mulțumim pentru feedback!

×