本人项目中遇到如下问题:oracle中查询一个3000万记录的表tbl_test,查询约进行了5分钟,即触发了ora-01555错误,导致查询失败。环境:
1、oracle 11g
2、查询前,磁盘IO占用率已很高,达95%以上。
3、CPU 8核SQL语句:
select /* +parallel(tbl_test,3)*/ sid from tbl_test;疑问:有什么方法可以优化该SQL语句,缩短其查询速度?多谢!

解决方案 »

  1.   

    sid是否加索引,如果加了查询慢的话,或按照时间段来查询不要一下查询3000万数据。
    如果表大的话,查询频繁的话最好做分区,会解决查询效率问题。
    还有一个办法就是存入临时表中在临时表查询效率会更高一下。
      

  2.   

    ora-01555 快照过旧,
    解决方法有几个
    1、增加undo
    2、减少undo 保留时间
    3、减少查询的规模,可采用分区技术,看看执行计划,全表扫的话谁也扛不住啊