Resumo
Esta atualização introduz um novo argumento de dica de consulta, use Hint, que permite orientar o otimizador de consulta sem credenciais elevadas ou sem ser membro da função de servidor sysadmin. A sintaxe dessa nova dica de consulta é semelhante à seguinte:
<query_hint > ::={USE HINT(N'key' [ [, ]...n ])}
Esta atualização também introduz as seguintes opções de dica que podem ser usadas com o argumento de Dica use .
Option |
Sinalizador de rastreamento 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 a pressuposição de confinamento simples em vez da pressuposição de confinamento base padrão para junções, sob o otimizador de consultas Modelo de previsão de cardinalidade do SQL Server 2014 (12. x) ou versão mais recente. |
|
ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES |
TF 4137 |
Faz com que o SQL Server gere um plano usando seletividade mínima ao estimar e predicado para filtros para a conta para correlação. Esse nome de dica é paralelo a sinalizador de rastreamento 4137 quando usado com o modelo de previsão cardinalidade do SQL Server 2012 (11. x) e versões anteriores, e tem efeito semelhante quando o sinalizador de rastreamento 9471 é usado com o modelo de previsão de cardinalidade do SQL Server 2014 (12. x) ou superior. |
|
DISABLE_BATCH_MODE_ADAPTIVE_JOINS |
Desabilita junções adaptáveis do modo em lotes. |
Iniciando no SQL Server 2017 |
|
DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK |
Desabilita o resultado da concessão de memória do modo em lotes. |
Iniciando no SQL Server 2017 |
|
DISABLE_DEFERRED_COMPILATION_TV |
Desabilita a compilação adiada de variável de tabela. |
Iniciando no SQL Server 2019 |
|
DISABLE_INTERLEAVED_EXECUTION_TVF |
Desabilita a execução intercalada para funções com valor de tabela de várias instruções. |
Iniciando no SQL Server 2017 |
|
DISABLE_OPTIMIZED_NESTED_LOOP |
TF 2340 |
Instrui o processador de consulta a não usar uma operação de classificação (classificação em lotes) para junções de loop aninhado otimizados ao gerar um plano de consulta. |
|
DISABLE_OPTIMIZER_ROWGOAL |
TF 4138 |
Faz com que o SQL Server gere um plano que não usa as modificações de meta de linha com consultas que contêm essas palavras-chave:
|
|
DISABLE_PARAMETER_SNIFFING |
TF 4136 |
Instrui o otimizador de consultas a usar a média de distribuição de dados durante a compilação de uma consulta com um ou mais parâmetros. Essa instrução torna o plano de consulta independente do valor de parâmetro que foi usado primeiro quando a consulta foi compilada. Use esta dica para substituir a configuração de escopo de banco de dados PARAMETER_SNIFFING = desativado. |
|
DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK |
Desativa o modo de linha de concessão de memória. |
Iniciando no SQL Server 2019 |
|
DISABLE_TSQL_SCALAR_UDF_INLINING |
Desabilita o realinhamento de UDF escalar. |
Iniciando no SQL Server 2019 |
|
DISALLOW_BATCH_MODE |
Desabilita a execução do modo em lotes. |
Iniciando no SQL Server 2019 |
|
ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS |
TF 4139 |
Habilita as estatísticas rápidas geradas automaticamente (alteração do histograma) para qualquer coluna de índice à esquerda para a qual a estimativa de cardinalidade é necessária. O histograma usado para estimar a cardinalidade será ajustado em tempo de compilação da consulta para a conta para o valor máximo real ou o valor mínimo desta coluna. |
|
ENABLE_QUERY_OPTIMIZER_HOTFIXES |
TF 4199 |
Habilita os hotfixes do otimizador de consultas (alterações lançadas em Service Packs e atualizações cumulativas do SQL Server). Use esta dica para substituir Definição de configuração com escopo de banco de dados QUERY_OPTIMIZER_HOTFIXES = on. |
|
FORCE_DEFAULT_CARDINALITY_ESTIMATION |
TF 9481 |
Obriga o otimizador de consulta a usar Modelo de previsão de cardinalidade que corresponde ao nível de compatibilidade do banco de dados atual. Use esta dica para substituir Configuração com escopo de banco de dados LEGACY_CARDINALITY_ESTIMATION = ativado. |
|
FORCE_LEGACY_CARDINALITY_ESTIMATION |
TF 9481 |
Obriga o otimizador de consulta a usar Modelo de estimativa de cardinalidade do SQL Server 2012 (11. x) e versões anteriores. Use esta dica para substituir a configuração de escopo de banco de dados LEGACY_CARDINALITY_ESTIMATION = on. |
|
QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n |
Força o comportamento do otimizador de consulta em um nível de consulta. Esse comportamento ocorre como se a consulta fosse compilada com o nível de compatibilidade do banco de dados n, em que n é um nível de compatibilidade de banco de dados com suporte. Consultesys.dm_exec_valid_use_hints para obter uma lista de valores com suporte no momento para n. |
a partir do SQL Server 2017 (14. x) CU10 |
Para obter mais informações, consulte Dicas (Transact-SQL)-consulta.
Informações adicionais
Esta atualização está incluída no Service Pack 1 para SQL Server 2016.
Cada compilação nova do SQL Server 2016 contém todos os hotfixes e todas as correções de segurança que foram incluídas na compilação anterior. Recomendamos que você instale a versão mais recente do SQL Server 2016.
Os cenários em que o comportamento do otimizador de consulta do SQL Server (QO) devem ser tratados são muito comuns e tradicionalmente são tratados por meio de vários sinalizadores de rastreamento diferentes (documentados e não documentados). No entanto, quando os sinalizadores de rastreamento são definidos globalmente, eles podem ter um efeito adverso em outras cargas de trabalho. Além disso, habilitá-los por sessão não é prático com os aplicativos existentes e habilitá-los por consulta com a opção QUERYTRACEON requer associação na função de servidor fixa sysadmin. (Embora você possa solucionar esse comportamento usando um guia de plano ou um procedimento armazenado, credenciais elevadas ainda são necessárias.) Os sinalizadores de rastreamento são usados para definir temporariamente as características específicas do servidor ou para desativar um determinado comportamento, que podem ser difíceis de gerenciar e entender. Para obter informações sobre sinalizadores de rastreamento, consulte o tópico sobre sinalizadores de rastreamento (Transact-SQL) no site do Microsoft Developer Network (MSDN).
Referências
Saiba mais sobre a terminologia que a Microsoft usa para descrever atualizações de software.