SQL Server
teilt jeden Index in bis zu 200
auf reicht mit den folgenden Daten (von hier).
):
Normalerweise gehen die meisten eingetragenen Werte in RANGE_HI_KEY
.
Sie können jedoch in den Bereich gelangen und dies kann zu einer Schiefe in der Verteilung führen.
Stellen Sie sich diese Daten vor (unter anderem):
Schlüsselwert Anzahl der Zeilen
1 1
2 1
3 10000
4 1
SQL Server
bildet normalerweise zwei Bereiche:1
bis 3
und 4
zum nächsten gefüllten Wert, der diese Statistik erstellt:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, d. h. bei der Suche nach beispielsweise 2
, es gibt aber 1
Zeile und es ist besser, den Indexzugriff zu verwenden.
Aber wenn 3
innerhalb des Bereichs liegt, lauten die Statistiken:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
Der Optimierer denkt, dass es 3334
gibt Zeilen für den Schlüssel 2
und der Indexzugriff ist zu teuer.