SQL Server
chia từng chỉ mục thành tối đa 200
phạm vi với dữ liệu sau (từ tại đây
):
Thông thường, hầu hết các giá trị được điền vào RANGE_HI_KEY
.
Tuy nhiên, chúng có thể đi vào phạm vi và điều này có thể dẫn đến sự sai lệch trong phân phối.
Hãy tưởng tượng những dữ liệu này (trong số những dữ liệu khác):
Giá trị chính Số lượng hàng
1 1
2 1
3 10000
4 1
SQL Server
thường xây dựng hai phạm vi:1
thành 3
và 4
sang giá trị được điền tiếp theo, giá trị này tạo nên những thống kê sau:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
3 2 10000 1 2
, có nghĩa là khi tìm kiếm, chẳng hạn, 2
, có nhưng 1
hàng và tốt hơn là sử dụng quyền truy cập chỉ mục.
Nhưng nếu 3
bên trong phạm vi, các số liệu thống kê là:
RANGE_HI_KEY RANGE_ROWS EQ_ROWS AVG_RANGE_ROWS DISTINCT_RANGE_ROWS
4 10002 1 3334 3
Trình tối ưu hóa cho rằng có 3334
hàng cho khóa 2
và quyền truy cập chỉ mục quá đắt.