SQL Server
divide cada índice en hasta 200
rangos con los siguientes datos (de aquí
):
Por lo general, la mayoría de los valores poblados van en RANGE_HI_KEY
.
Sin embargo, pueden entrar en el rango y esto puede provocar un sesgo en la distribución.
Imagina estos datos (entre otros):
Valor clave Recuento de filas
1 1
2 1
3 10000
4 1
SQL Server
generalmente construye dos rangos:1
a 3
y 4
al siguiente valor poblado, lo que hace estas estadísticas:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, lo que significa que al buscar, por ejemplo, 2
, solo hay 1
fila y es mejor usar el acceso de índice.
Pero si 3
va dentro del rango, las estadísticas son estas:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
El optimizador cree que hay 3334
filas para la clave 2
y el acceso al índice es demasiado caro.