Har du oprettet et indeks stop_id, departure_time
? Fordi departure_time, stop_id
vil absolut intet gøre.
Dette er en virkelig hård en - den har alle mulige dårlige ting til at håndtere indekser :(
Du har en rækkevidde, en OR og en ikke sammenhængende IN - det bliver ikke værre end det.
Prøv stop_id, departure_time
og hvis det ikke hjælper, så er der ikke meget du kan gøre end at skifte til PostgreSQL.
Du kan også prøve at omskrive forespørgslen som:
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'
)
eller:
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'
)