oralce大数据量查询的优化

  1. mes_mat_txn_r2_hist记录条数:4015745

        mes_mat_material_h记录条数:7933411

  1. 两个数据表的数据分别都在百万级以上,
  2. 原始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秒以上,关键是执行不稳定。

  1. 优化后的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

 

你可能感兴趣的:(oracle,sql,C++,c,C#)