【如何提高海量数据的查询速度,高手请指点】
本人项目中遇到如下问题:
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语句,缩短其查询速度?
多谢!
------解决方案--------------------sid是否加索引,如果加了查询慢的话,或按照时间段来查询不要一下查询3000万数据。
如果表大的话,查询频繁的话最好做分区,会解决查询效率问题。
还有一个办法就是存入临时表中在临时表查询效率会更高一下。
------解决方案--------------------网络上很多方法啊,个人觉得最适用的是增加回滚段,当然,其它方法也不错,
看业务需求了,之前出现过这个错误,主要是业务更新太频繁了,导致了回滚段被覆盖造成的
------解决方案--------------------ora-01555 快照过旧,
解决方法有几个
1、增加undo
2、减少undo 保留时间
3、减少查询的规模,可采用分区技术,看看执行计划,全表扫的话谁也扛不住啊
------解决方案--------------------楼主分区吧,
楼主的表是不是更新频繁啦,更新频繁就增大回滚段吧。