Chúng tôi có một bảng có hơn hai triệu hàng trong đó tất cả các truy vấn đối với nó sẽ là một tra cứu bằng cách sử dụng Column1
và Column2
. Ngoài ra, sẽ chỉ có một kết quả có thể. Ví dụ ...Lập chỉ mục SQL cho Giữa truy vấn chỉ với một kết quả phù hợp?
Col1 Col2
1 5
6 10
11 15
select * from table1 where 8 between Col1 and Col2
Tôi hiện đang có một nhóm chỉ số duy nhất trên Col1
và Col2
. Cho đến nay tôi đã không thể tìm ra cách điều chỉnh thêm truy vấn và các chỉ mục để giảm thiểu các hàng được xử lý. Kế hoạch thực hiện hiện đang báo cáo chi phí của gần 0,5 và 113k hàng được xử lý khi định vị một câu trả lời chính xác và duy nhất.
Tôi có thể xem các tùy chọn nào?
Theo yêu cầu, một số chi tiết từ kế hoạch thực hiện hiện tại:
Operation
Clustered Index Seek
Predicate
CONVERT_IMPLICIT(bigint,[@2],0)<=[Col2]
Seek Predicate
Seek Keys[1]: End: Col1 <= Scalar Operator(CONVERT_IMPLICIT(bigint,[@1],0))
Bạn có thể viết nó là 'chọn * từ bảng 1 trong đó Col1 = < 8 and Col2> = 8' – Vicki
Bước này luôn luôn là 5 trong Col1? Nếu vậy thì câu trả lời rất đơn giản :) –
Kế hoạch thực hiện bạn trông như thế nào? Bạn có thể thêm câu hỏi đó vào câu hỏi không? –