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.