В приведенном ниже запросе найдите самые последние записи в time_histroy для каждой строки в output_history в течение 20180101 ~ 20180106.
Но требуется время, чтобы получить список в реальной ситуации.
Фактическая ситуация такова, что 3 таблицы, такие как time_history, output_history, equip_type, имеют много строк и не имеют проиндексированных строк.
Помимо индексов, есть ли место для настройки запросов? (Dbms: Oracle)
SELECT
o.equip,
o.model,
o.data1,
o.quantity,
t.data2,
t.time,
e.equip_type
FROM
output_history o
INNER JOIN equip_type e ON e.equip = o.equip
INNER JOIN time_history t ON t.equip = o.equip AND t.data2 <= o.data1
AND t.data2 >= '20180101' -- prevent from scanning all the output_history data2
WHERE NOT EXISTS (
SELECT 1
FROM time_history
WHERE
equip = o.equip
AND data2 <= o.data1
AND data2 > t.data2
AND data2 >= '20180101' AND data2 <= '2080106' -- prevent from scanning all the time_history data2
)AND o.data1 >= '20180101' AND o.data1 <= '20180106'