Czy utworzyłeś indeks stop_id, departure_time
? ? Ponieważ departure_time, stop_id
nie zrobi absolutnie nic.
To jest naprawdę trudny - ma wszelkie możliwe złe rzeczy do radzenia sobie z indeksami :(
Masz zasięg, OR i nieciągłe IN – nie ma nic gorszego.
Wypróbuj stop_id, departure_time
a jeśli to nie pomoże, nie możesz nic zrobić poza przejściem na PostgreSQL.
Możesz także spróbować przepisać zapytanie jako:
SELECT *
from stop_times
WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
AND departure_time BETWEEN '02:41' AND '05:41'
)
OR ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
AND departure_time BETWEEN '26:41' AND '29:41'
)
lub:
SELECT *
from stop_times
WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
AND departure_time BETWEEN '02:41' AND '05:41'
)
UNION ALL
SELECT *
from stop_times
WHERE ( stop_times.stop_id IN(51511,51509,51508,51510,6,53851,51522,51533)
AND departure_time BETWEEN '26:41' AND '29:41'
)