Riepilogo
Questo aggiornamento introduce un nuovo argomento di hint di query, use hint, che consente di guidare Query Optimizer senza credenziali elevate o senza essere membri del ruolo del server sysadmin. La sintassi di questo nuovo hint di query è simile alla seguente:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Questo aggiornamento introduce anche le opzioni di hint seguenti che possono essere usate con l'argomento hint USE .
Opzione |
Contrassegno di traccia equivalente |
Descrizione |
Si applica a |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
Fa in modo che SQL Server generi un piano di query usando il presupposto di contenimento semplice anziché l'ipotesi di contenimento di base predefinita per i join, in Query Optimizer Modello di stima della cardinalità di SQL Server 2014 (12. x) o versioni successive. |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Fa in modo che SQL Server generi un piano usando la selettività minima quando si stimano e predicati per i filtri per tenere conto della correlazione. Il nome del suggerimento è parallelo flag di traccia 4137 se usato con il modello di stima della cardinalità di SQL server 2012 (11. x) e versioni precedenti e ha un effetto simile quando il contrassegno di traccia 9471 viene usato con il modello di stima della cardinalità di SQL Server 2014 (12. x) o versione successiva. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Disabilita i join adattivi in modalità batch. |
a partire da SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Disabilita il feedback della concessione della memoria in modalità batch. |
a partire da SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Disabilita la compilazione differita della variabile di tabella. |
a partire da SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Disabilita l'esecuzione Interleaved per le funzioni con valori di tabella con istruzioni multiple. |
a partire da SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Indica a query processor di non usare un'operazione di ordinamento (ordinamento batch) per i join di ciclo annidati ottimizzati durante la generazione di un piano di query. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Fa in modo che SQL Server generi un piano che non usa le modifiche dell'obiettivo di riga con le query che contengono queste parole chiave:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Indica a Query Optimizer di usare la media distribuzione dei dati durante la compilazione di una query con uno o più parametri. Questa istruzione rende il piano di query indipendente dal valore del parametro usato per la prima volta quando la query è stata compilata. Usare questo hint per ignorare l'impostazione di configurazione con ambito database PARAMETER_SNIFFING = disattivato. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Disabilita il feedback della memoria in modalità di riga. |
a partire da SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Disabilita l'inlining della FDU scalare. |
a partire da SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Disabilita l'esecuzione in modalità batch. |
a partire da SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Consente di abilitare le statistiche rapide generate automaticamente (modifica istogramma) per qualsiasi colonna di indice iniziale per la quale è necessaria la stima della cardinalità. L'istogramma usato per stimare la cardinalità verrà regolato in fase di compilazione della query per tenere conto del valore massimo o minimo effettivo della colonna. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Consente di aggiornare gli hotfix di query Optimizer (modifiche rilasciate negli aggiornamenti cumulativi e nei Service Pack di SQL Server). Usare questo hint per eseguire l'overrideImpostazione di configurazione con ambito Database QUERY_OPTIMIZER_HOTFIXES = attivato. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Impone l'uso di query optimizer Modello di stima della cardinalità che corrisponde al livello di compatibilità del database corrente. Usare questo hint per eseguire l'overrideImpostazione di configurazione con ambito Database LEGACY_CARDINALITY_ESTIMATION = attivata. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Impone l'uso di query optimizer Modello di stima della cardinalità di SQL Server 2012 (11. x) e versioni precedenti. Usare questo hint per ignorare l'impostazione di configurazione con ambito database LEGACY_CARDINALITY_ESTIMATION = attivato. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Impone il comportamento di query optimizer a livello di query. Questo comportamento si verifica come se la query fosse stata compilata con il livello di compatibilità del database n, dove n è un livello di compatibilità del database supportato. Fare riferimento asys.dm_exec_valid_use_hints per un elenco dei valori attualmente supportati per n. |
a partire da SQL Server 2017 (14. x) CU10 dalla |
Per altre informazioni, vedere hints (Transact-SQL)-query.
Ulteriori informazioni
Questo aggiornamento è incluso nel Service Pack 1 per SQL Server 2016.
Ogni nuova build per SQL Server 2016 contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nella build precedente. È consigliabile installare la Build più recente per SQL Server 2016.
Gli scenari in cui il comportamento di SQL Server Query Optimizer (QO) devono essere accennati sono abbastanza comuni e vengono tradizionalmente risolti usando diversi flag di traccia (documentati e non documentati). Tuttavia, quando i flag di traccia sono impostati globalmente, potrebbero avere effetti negativi su altri carichi di lavoro. Inoltre, l'abilitazione per ogni sessione non è pratica con le applicazioni esistenti e l'abilitazione per ogni query con l' opzione QUERYTRACEON richiede l'appartenenza al ruolo predefinito del server sysadmin. Anche se è possibile aggirare questo comportamento usando una guida di piano o una stored procedure, sono ancora necessarie credenziali elevate. I contrassegni di traccia vengono usati per impostare temporaneamente specifiche caratteristiche del server o per disattivare un determinato comportamento, ma possono essere difficili da gestire e comprendere. Per informazioni sui contrassegni di traccia, vedere l'argomento contrassegni di traccia (Transact-SQL) nel sito Web Microsoft Developer Network (MSDN).
Riferimenti
Informazioni sulla terminologia utilizzata da Microsoft per descrivere gli aggiornamenti software.