バスの ETA に対して行われた予測に実際のメッセージがあるかどうかを確認したいと考えています。このクエリを書きましたが、タイムアウトします。私は何か間違ったことをしていますか?ここで役立つ最適化はありますか?
SELECT
P.ROUTE,
P.CODE,
(
SELECT COUNT(*)
FROM MESSAGE M
WHERE M.SENTDATE BETWEEN P.ARRIVAL-(20/60/24) AND P.ARRIVAL+(2/60/24)
AND TRIM(SUBSTR(M.LOCATIONINFO, 3, 10)) = P.ROUTE
AND TRIM(SUBSTR(M.LOCATIONINFO, 25, 10)) = P.CODE
)
CNT
FROM
(
SELECT *
FROM PREDICTION P
WHERE P.ARRIVAL BETWEEN TO_DATE('2012/07/04 04:30:00', 'YYYY/MM/DD HH24:MI:SS')
AND TO_DATE('2012/07/04 04:30:10', 'YYYY/MM/DD HH24:MI:SS')
AND P.ROUTE ='7'
AND P.CODE ='2179'
)
P