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 の行 インデックスへのアクセスはコストがかかりすぎます。