Mamy tabelę zawierającą ponad dwa miliony wierszy, w której wszystkie zapytania związane z nią to między wyszukiwaniem z użyciem Column1
i Column2
. Ponadto będzie tylko jeden możliwy wynik. Na przykład ...Indeksowanie SQL dla zapytania z tylko jednym dopasowaniem?
Col1 Col2
1 5
6 10
11 15
select * from table1 where 8 between Col1 and Col2
obecnie mam unikalnego indeksu klastrowego na Col1
i Col2
. Do tej pory nie byłem w stanie dowiedzieć się, jak dalej dostroić zapytanie i indeksy, aby zminimalizować liczbę obsługiwanych wierszy. Plan wykonania przedstawia obecnie koszt prawie 0,5 i 113 tys. Wierszy obsługiwanych podczas lokalizowania jedynej poprawnej odpowiedzi.
Jakie opcje mogę pominąć?
Zgodnie z wnioskiem, dane z aktualnego planu wykonania:
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))
Czy pomożecie napisać to jako "wybierz * z tabeli 1, gdzie Col1 = < 8 and Col2> = 8 ' – Vicki
Czy krok zawsze wynosi 5 w Col1? Jeśli tak, to odpowiedź jest prosta :) –
Jak wygląda plan wykonania? Czy możesz dodać to do pytania? –