Tenho uma consulta propensa à sensibilidade de parâmetros e que sofre com seu parâmetro com valor de tabela. Sou preguiçoso e só quero resolver isso com dicas de consulta. Quando estou preguiçoso, consigo resolver a sensibilidade de parâmetros com OPTION (OPTIMIZE FOR UNKNOWN)
. Isso me gera três perguntas muito relacionadas:
- Tem algum impacto em variáveis
OPTION (OPTIMIZE FOR UNKNOWN)
com valor de tabela ? - Tem algum impacto nos parâmetros
OPTION (OPTIMIZE FOR UNKNOWN)
com valor de tabela ? - Quais outras dicas de consulta podem ser usadas para influenciar estimativas de cardinalidade para parâmetros
OPTION(RECOMPILE)
com valores de tabela ?
Tanto meus próprios experimentos quanto a documentação sugerem que essa é uma causa perdida. Parâmetros com valor de tabela estão sujeitos à detecção de parâmetros, mas tudo o que é detectado é a cardinalidade, então OPTION (OPTIMIZE FOR UNKNOWN)
não deve fazer nada.
Quanto à questão de usar outras dicas de tabela, sei que posso alterar a estimativa para operações no parâmetro com valor de tabela (por exemplo, OPTION (USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES')
), mas não acho que as dicas possam influenciar a estimativa de cardinalidade para o parâmetro em si.