Bạn đã tạo chỉ mục stop_id, departure_time
chưa ? Bởi vì departure_time, stop_id
sẽ hoàn toàn không làm gì cả.
Đây là một thực sự khó - nó có mọi điều xấu có thể xảy ra khi xử lý các chỉ mục :(
Bạn có một phạm vi, một HOẶC và một IN không liền kề - điều đó không tệ hơn thế.
Hãy thử stop_id, departure_time
và nếu nó không hữu ích thì bạn không thể làm gì nhiều khi chuyển sang PostgreSQL.
Bạn cũng có thể thử viết lại truy vấn dưới dạng:
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'
)
hoặc:
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'
)