Salutare,
Am o tabela cu 2 indecsi:
index1 / clustered / pe coloanele effective_date, area_source_id, area_sink_id, data_type_id
index2 / nonclustered, unique, primary key/pe coloana id
SELECT *
FROM my_table
WHERE 1=1
AND area_source_id IN (15, 37)
AND area_sink_id IN (15, 37)
AND data_status_id = 1
AND data_type_id = 2
AND data_source_id = 3
AND (
('2008-09-11 10:00PM' BETWEEN effective_date AND termination_date)
OR
(effective_date <= '2008-09-11 10:00PM' AND termination_date IS NULL)
)
Intrebare:
Pentru SQLul de mai sus, cum sa rescriu ultima conditie din WHERE a.i. sa am index seek pe index1? Acum, in planul de executie se face un index scan pe index2 (asta datorita
ultimei conditii pe effective_date, presupun pentru ca effective_date nu este
SARGable).
Am folosit hint ca sa fortez folosirea lui index1, dar timpul de executie este si mai mare.
Orice help, sugestie este binevenita.
Multumesc.