SQL Server
divide cada índice em até 200
intervalos com os seguintes dados (de aqui
):Normalmente, os valores mais preenchidos vão para
RANGE_HI_KEY
. No entanto, eles podem entrar no intervalo e isso pode levar à distorção na distribuição.
Imagine esses dados (entre outros):
Valor-chave Contagem de linhas
1 1
2 1
3 10000
4 1
SQL Server
geralmente cria dois intervalos:1
para 3
e 4
para o próximo valor preenchido, o que torna estas estatísticas:RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, o que significa ao pesquisar, digamos,
2
, existe apenas 1
linha e é melhor usar o acesso ao índice. Mas se
3
vai dentro do intervalo, as estatísticas são estas:RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
O otimizador acha que existem
3334
linhas para a chave 2
e o acesso ao índice é muito caro.