Vytvořili jste index stop_id, departure_time
? Protože departure_time, stop_id
neudělá vůbec nic.
Toto je skutečně tvrdý - má všechny možné špatné věci pro práci s indexy :(
Máte rozsah, OR a nesouvislý IN – nezhorší se to.
Zkuste stop_id, departure_time
a pokud to nepomůže, pak nemůžete udělat nic jiného, než přejít na PostgreSQL.
Můžete také zkusit přepsat dotaz 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'
)
nebo:
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'
)