Haben Sie einen Index stop_id, departure_time
erstellt? ? Denn departure_time, stop_id
wird absolut nichts tun.
Das ist wirklich schwer - es hat alle möglichen Nachteile für den Umgang mit Indizes :(
Sie haben einen Bereich, ein OR und ein nicht zusammenhängendes IN - es wird nicht schlimmer.
Versuchen Sie es mit stop_id, departure_time
und wenn es nicht hilft, können Sie nicht viel tun, außer zu PostgreSQL zu wechseln.
Sie können auch versuchen, die Abfrage wie folgt umzuschreiben:
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'
)
oder:
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'
)