Sim se você:
- estão executando o SQL Server 2014 ou posterior; e
- são capazes de executar a consulta com o sinalizador de rastreamento 176 ativo; e
- a coluna computada é
PERSISTED
Especificamente, são necessárias pelo menos as seguintes versões :
- Atualização cumulativa 2 para SQL Server 2016 SP1
- Atualização cumulativa 4 para o SQL Server 2016 RTM
- Atualização cumulativa 6 para SQL Server 2014 SP2
MAS, para evitar um bug (ref para 2014 e 2016 e 2017 ) introduzido nessas correções, aplique:
O sinalizador de rastreamento é eficaz como uma –T
opção de inicialização , no escopo global e da sessão DBCC TRACEON
, usando e por consulta OPTION (QUERYTRACEON)
ou um guia de plano.
O sinalizador de rastreamento 176 impede a expansão persistente da coluna computada.
O carregamento inicial de metadados realizado ao compilar uma consulta traz todas as colunas, não apenas aquelas diretamente referenciadas. Isso disponibiliza todas as definições de coluna computadas para correspondência, o que geralmente é uma coisa boa.
Como um efeito colateral infeliz, se uma das colunas carregadas (computadas) usar uma função escalar definida pelo usuário, sua presença desabilitará o paralelismo para toda a consulta, mesmo quando a coluna computada não for realmente usada .
O sinalizador de rastreamento 176 ajuda com isso, se a coluna persistir, não carregando a definição (já que a expansão é ignorada). Dessa forma, uma função escalar definida pelo usuário nunca está presente na árvore de consulta de compilação, portanto, o paralelismo não é desativado.
A principal desvantagem do sinalizador de rastreamento 176 (além de ser documentado apenas levemente) é que também evita que a expressão de consulta corresponda a colunas computadas persistentes: se a consulta contiver uma expressão correspondente a uma coluna computada persistente, o sinalizador de rastreamento 176 impedirá que a expressão seja substituída por uma referência à coluna computada.
Para obter mais detalhes, consulte o artigo SQLPerformance.com, Colunas computadas adequadamente persistidas .
Como a pergunta menciona XML, como alternativa à promoção de valores usando uma coluna computada e uma função escalar, você também pode usar um Índice XML Seletivo, como você escreveu em Índices Seletivos XML: Nada mau .