- mes_mat_txn_r2_hist记录条数:4015745
mes_mat_material_h记录条数:7933411
- 两个数据表的数据分别都在百万级以上,
- 原始SQL语句:
select * from mes_mat_txn_r2_hist where sid=(select max(a.sid)
from mes_mat_txn_r2_hist a, mes_mat_material_h b where
a.mat_h_sid = b.sid and b.mat_id ='102052022202')
执行时间在15秒以上,关键是执行不稳定。
- 优化后的SQL语句:
SELECT /*+ RULE */ *
FROM mes_mat_txn_r2_hist
WHERE sid =(SELECT MAX(a.sid)
FROM (SELECT sid
FROM mes_mat_material_h b
WHERE b.mat_id = '102052022202') c,
mes_mat_txn_r2_hist a
WHERE A.MAT_H_SID = C.SID)
执行时间在0.25秒。
说明:通过此查询的优化进一步熟悉了oracle优化器的选择对执行效率的影响。以后要多加强对优化器的了解;本实验oracle的版本是oracle10.2.0。1