使用JOIN的Tunning查询

时间:2019-01-10 13:43:37

标签: join not-exists finetunning

以下查询在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'

0 个答案:

没有答案