Apakah Anda membuat indeks stop_id, departure_time
? Karena departure_time, stop_id
akan melakukan apa-apa.
Ini adalah benar-benar yang sulit - ia memiliki segala kemungkinan buruk untuk berurusan dengan indeks :(
Anda memiliki rentang, OR dan IN yang tidak bersebelahan - tidak ada yang lebih buruk dari itu.
Coba stop_id, departure_time
dan jika tidak membantu maka tidak banyak yang dapat Anda lakukan selain beralih ke PostgreSQL.
Anda juga dapat mencoba menulis ulang kueri sebagai:
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'
)
atau:
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'
)