Se eu tiver um OPTIMIZE FOR UNKNOWN
em meu procedimento armazenado, posso ver qual valor o banco de dados decidiu ser o ideal?
Se eu tiver um OPTIMIZE FOR UNKNOWN
em meu procedimento armazenado, posso ver qual valor o banco de dados decidiu ser o ideal?
OPTIMIZE FOR UNKNOWN não usa um valor - em vez disso, ele usa o vetor de densidade.
Se você executar DBCC SHOWSTATISTICS, será o valor listado na coluna "Toda a densidade" do segundo conjunto de resultados:
Neste exemplo, estou usando o banco de dados de demonstração StackOverflow. O vetor de densidade para a coluna Reputação é 5.962674E-05.
Se você pegar esse valor vezes o número de linhas na tabela, 5,962674E-05 * 5277831, obterá 314,69985680094. Esse é o número de linhas que o SQL Server espera retornar para qualquer filtro de reputação.
Benjamin Nevarez tem um bom artigo sobre
OPTIMIZE FOR UNKNOWN
em seu blogEssencialmente, o SQL Server está usando estatísticas sobre a tabela junto com a matemática para determinar qual valor usar.
De sua postagem: