SQL Server opdeler hvert indeks i op til 200 områder med følgende data (fra her
):
Normalt går de fleste udfyldte værdier ind i RANGE_HI_KEY .
De kan dog komme ind i området, og det kan føre til skævhed i fordelingen.
Forestil dig disse data (blandt de andre):
Nøgleværdi Antal rækker
1 1
2 1
3 10000
4 1
SQL Server opbygger normalt to områder:1 til 3 og 4 til den næste udfyldte værdi, hvilket gør disse statistikker:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, hvilket betyder, når du søger efter f.eks. 2 , der er kun 1 række, og det er bedre at bruge indeksadgangen.
Men hvis 3 går inden for området, er statistikken disse:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
Optimizeren mener, at der er 3334 rækker for nøglen 2 og indeksadgang er for dyr.