インデックスを作成しましたかstop_id, departure_time
? departure_time, stop_id
まったく何もしません。
これは本当に 難しいもの-インデックスを処理するためのすべての可能な悪いことがあります:(
範囲、OR、および連続していないINがあります。それより悪くなることはありません。
stop_id, departure_time
をお試しください それでも問題が解決しない場合は、PostgreSQLに切り替える以外にできることはほとんどありません。
クエリを次のように書き直すこともできます:
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'
)
または:
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'
)