Heeft u een index stop_id, departure_time
. aangemaakt ? Omdat departure_time, stop_id
zal absoluut niets doen.
Dit is een echt moeilijke - het heeft alle mogelijke slechte dingen voor het omgaan met indexen :(
Je hebt een bereik, een OR en een niet-aangrenzende IN - erger kan het niet worden.
Probeer stop_id, departure_time
en als het niet helpt, kun je niet veel anders doen dan overschakelen naar PostgreSQL.
U kunt ook proberen de query te herschrijven als:
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'
)
of:
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'
)