日期:2014-05-16  浏览次数:20918 次

【如何提高海量数据的查询速度,高手请指点】
本人项目中遇到如下问题:

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、减少查询的规模,可采用分区技术,看看执行计划,全表扫的话谁也扛不住啊
------解决方案--------------------
楼主分区吧,
楼主的表是不是更新频繁啦,更新频繁就增大回滚段吧。