Li que apenas Trivial Plans podem ser Simple Parameterized , e que nem todas as consultas (mesmo quando o plano é Trivial) podem ser Simple Parameterized .
Então, por que esse plano está mostrando Otimização Completa e Parametrização Simples ao mesmo tempo?
A Parametrização Simples é tentada quando um plano trivial é encontrado. A tentativa de parametrização pode ser considerada segura ou insegura .
O ponto chave é que um plano trivial seja encontrado e considerado seguro . Se o custo do plano trivial exceder o
cost threshold for parallelism
, o otimizador passará para estágios posteriores de otimização, onde planos paralelos podem ser considerados. Quer o resultado final seja um plano serial ou paralelo, ele será parametrizado de forma simples se o plano trivial seguro encontrado ( mas não usado em última instância ) foi parametrizado.No exemplo da pergunta, definir o
cost threshold for parallelism
custo mais alto do que o plano trivial permitirá que o otimizador pare nesse estágio.Observar o plano de consulta nem sempre é suficiente para descobrir se sua consulta foi realmente parametrizada simples.
A maneira mais segura é verificar alguns DMVs para verificar:
Além disso, você também pode usar o sinalizador de rastreamento não documentado 8607, mas não como uma
OPTION
dica de cláusula. O uso daOPTION
cláusula impede um plano trivial.Se o plano for considerado seguro para Parametrização Simples, você verá uma mensagem confirmando isso aqui.