Thực hiện thống kê (giúp quyết định liệu chỉ mục có được sử dụng) có tính đến số hàng trên giá trị cột thực tế hay không. Chỉ sử dụng số hàng trung bình .Thống kê và chỉ mục SQL - Chi tiết là gì?
Giả sử tôi có một bảng có một cột bit được gọi là hoạt động có hàng triệu hàng, nhưng với 99,99% được đặt thành false. Nếu tôi có một chỉ số trên cột này, thì Sql đủ thông minh để biết sử dụng chỉ mục nếu tìm kiếm active = 1 nhưng không có điểm nếu tìm kiếm active = 0.
Ví dụ khác, nếu tôi có bảng có 1.000.000 bản ghi với cột được lập chỉ mục chứa khoảng 50.000 giá trị khác nhau với số hàng trung bình trên mỗi giá trị 10, nhưng sau đó một giá trị đặc biệt có 500.000 hàng. Chỉ mục có thể không hữu ích nếu tìm kiếm bản ghi đặc biệt này, nhưng sẽ rất hữu ích khi tìm kiếm bất kỳ mã nào khác.
Nhưng trường hợp đặc biệt này có làm hỏng hiệu quả của chỉ mục hay không.
Cảm ơn. Điều này có ích. Nếu tôi sử dụng nơi Active = 0 và IndexedValue = '1' nó sẽ thực hiện quét bảng trong khi Active = 1 và IndexValue = '1' sẽ sử dụng chỉ mục. – sgmoore
Không phải là một thử nghiệm rất tốt. Bạn nên sử dụng 'SELECT *' vì dĩ nhiên nó sẽ luôn sử dụng chỉ mục cho 'COUNT (*)' –