SQL Server
各インデックスを最大 200
に分割します 次のデータの範囲 (こちらから)
):
通常、入力された値のほとんどは RANGE_HI_KEY
に入ります .
ただし、範囲内に入る可能性があり、これが分布の偏りにつながる可能性があります。
これらのデータを (とりわけ) 想像してみてください:
キー値行数
1 1
2 1
3 10000
4 1
SQL Server
通常、2 つの範囲を構築します:1
3
へ および 4
これらの統計を作成する次の入力値に:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
、つまり 2
を検索するとき 、 1
しかありません インデックス アクセスを使用することをお勧めします。
3
の場合 範囲内に入ると、統計は次のようになります:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
オプティマイザは 3334
があると考えています キー 2
の行 インデックスへのアクセスはコストがかかりすぎます。