SQL Server dzieli każdy indeks na maksymalnie 200 zakresy z następującymi danymi (z tutaj
):
Zwykle większość wypełnianych wartości trafia do RANGE_HI_KEY .
Mogą jednak dostać się do zasięgu, a to może prowadzić do przekrzywienia dystrybucji.
Wyobraź sobie te dane (między innymi):
Wartość klucza Liczba wierszy
1 1
2 1
3 10000
4 1
SQL Server zwykle buduje dwa zakresy:1 do 3 i 4 do następnej wypełnionej wartości, co powoduje, że te statystyki:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, co oznacza podczas wyszukiwania, powiedzmy, 2 , jest tylko 1 wiersz i lepiej użyć dostępu do indeksu.
Ale jeśli 3 wchodzi w zakres, statystyki są następujące:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
Optymalizator uważa, że istnieje 3334 wiersze dla klucza 2 a dostęp do indeksu jest zbyt drogi.