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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值