Resumo
Esta atualização introduz um novo argumento de sugestão de consulta, USE HINT, que permite conduzir o otimizador de consulta sem credenciais elevadas ou sem ser membro da função de servidor sysadmin. A sintaxe desta nova sugestão de consulta assemelha-se ao seguinte:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Esta atualização também introduz as seguintes opções de sugestão que podem ser usadas com o argumento USE HINT.
Opção |
Bandeira de traço equivalente |
Descrição |
Aplica-se a |
---|---|---|---|
ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS |
TF 9476 |
Faz com que o SQL Server gere um plano de consulta usando o pressuposto de contenção simples em vez do pressuposto de contenção de base padrão para junções, sob o otimizador de consulta Modelo de estimativa cardinalício do SQL Server 2014 (12.x) ou mais recente. |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Faz com que o SQL Server gere um plano utilizando a seletividade mínima ao estimar e predicados para filtros para ter em conta a correlação. Este nome de pista é paralelo a traço da bandeira 4137 quando usado com modelo de estimativa de cardinalidade do SQL Server 2012 (11.x) e versões anteriores, e tem um efeito semelhante quando o traço da bandeira 9471 é usado com o modelo de estimativa de cardinalidade do SQL Server 2014 (12.x) ou superior. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Desativa as juntas adaptativas do modo de lote. |
a partir de SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Desativa o feedback do subsídio de memória do modo de lote. |
a partir de SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Desativa a compilação diferida variável da tabela. |
a partir de SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Desativa a execução intercalada para funções multi-declarações valorizadas por tabelas. |
a partir de SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Instrui o processador de consulta a não utilizar uma operação de classificação (classificação de lote) para a união aninhada otimizada quando gerar um plano de consulta. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Faz com que o SQL Server gere um plano que não utilize modificações de objetivos de linha com consultas que contenham estas palavras-chave:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Instrui o otimizador de consulta para usar a distribuição média de dados enquanto compila uma consulta com um ou mais parâmetros. Esta instrução torna o plano de consulta independente sobre o valor do parâmetro que foi usado pela primeira vez quando a consulta foi compilada. Utilize esta dica para substituir a definição de configuração de âmbito de base de dados PARAMETER_SNIFFING=OFF. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Desativa o feedback do subsídio de memória do modo de linha. |
a partir de SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Desativa a inlining da UDF escalar. |
a partir de SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Desativa a execução do modo de lote. |
a partir de SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Permite automaticamente estatísticas rápidas geradas (alteração histograma) para qualquer coluna de índice líder para a qual é necessária uma estimativa cardinalitinha. O histograma utilizado para estimar o cardinalício será ajustado no tempo de consulta compilação para contabilizar o valor máximo ou mínimo real desta coluna. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Ativa hotfixes otimizadores de consulta (alterações lançadas em Atualizações Cumulativas do SQL Server e Pacotes de Serviço). Use esta dica para anular Configuração de configuração de âmbito de dados QUERY_OPTIMIZER_HOTFIXES=ON. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Força o Otimizador de Consulta a usar Modelo de estimativa de Cardinalidade que corresponde ao nível atual de compatibilidade da base de dados. Use esta dica para anular Configuração de configuração de âmbito de dados LEGACY_CARDINALITY_ESTIMATION=ON. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Força o otimizador de consulta a usar Modelo de estimativa cardinalício do SQL Server 2012 (11.x) e versões anteriores. Utilize esta dica para substituir a definição de configuração de âmbito de base de dados LEGACY_CARDINALITY_ESTIMATION=ON. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Força o comportamento otimizador de consulta a um nível de consulta. Este comportamento acontece como se a consulta fosse compilada com nível de compatibilidade de base de dados n, quando n é um nível de compatibilidade de base de dados suportado. Consultesys.dm_exec_valid_use_hints para uma lista de valores atualmente suportados para n. |
a partir de SQL Server 2017 (14.x) CU10 |
Para obter mais informações, consulte Dicas (Transact-SQL) - Consulta.
Mais Informações
Esta atualização está incluída no Service Pack 1 para o SQL Server 2016.
Cada nova construção para o SQL Server 2016 contém todos os hotfixes e todas as correções de segurança que foram incluídas com a construção anterior. Recomendamos que instale a mais recente construção para o SQL Server 2016.
Os cenários em que o comportamento do otimizador de consulta sql server (QO) deve ser sugerido são bastante comuns, e tradicionalmente são abordados usando várias bandeiras de traços (documentados e não documentados). No entanto, quando as bandeiras de rastreio são definidas globalmente, podem ter um efeito adverso em outras cargas de trabalho. Além disso, permitir-lhes por sessão não é prático com as aplicações existentes, e permitir-lhes por consulta com OPTION QUERYTRACEON requer a adesão na função de servidor fixo sysadmin. (Embora possa contornar este comportamento utilizando um guia de planos ou um procedimento armazenado, ainda são necessárias credenciais elevadas.) As bandeiras de rastreio são usadas para definir temporariamente características específicas do servidor ou para desligar um determinado comportamento, podem ser difíceis de gerir e entender. Para obter informações sobre as bandeiras de traços, consulte o tópico Trace Flags (Transact-SQL) no website da Microsoft Developer Network (MSDN).
Referências
Conheça a terminologia que a Microsoft utiliza para descrever atualizações de software.