在设计的统计查询的有关sql中,由于数据量的增大,现在数据统计的结果显示很慢了。
在100000条数据的时候,设计的sql还能满足显示的要求,得出数据在7s内, 但是现在
数据量增加到了 1000000条的时候,sql的查询很慢 了! 一个显示需要 100~200s,这样的
性能太差 了, 不知道显示对这种海量的数据统计一般采用什么样的方法实现的,希望指点!现在我们已经针对sql做做了一些优化,建立了index,基本的sql的优化等,不知道是否还有其他的方法呢?  也希望有这种海量数据统计的同仁们能介绍一下你们实现统计的经验!!

解决方案 »

  1.   

    1. 查看各项参数的合理性,
    比如order by.group by用的频繁,排序量大就要加大sort_area_size,尽量用内存排序而不是磁盘排序.
    如果用了hash join,加大hash_area_size.
    2. 看执行计划和优化模式,一般使用基于成本模式的select /*+ first_rows */ * from ...响应会快些.
    3. 如果基于成本模式,要分析表和索引,这样可以让oracle得到更好的执行计划.
    4. 加大db cache size
    5. 采用分区表
    6  还有很多....
      

  2.   

    多谢各位的指点,现在有 :
    A 1000000条
    B 1000000条由于A B表需要关联找出需要的数据,这样导致查询的速度很慢,现在已经建立了部分的
    索引,但是查询一个select count(1) from A,B where ..
    这样的sql都需要4分钟左右的,速度太慢了! 
     不知道有什么好的解决办法,现在一边希望能对sql进行优化,一般希望找其他的解决办法
    希望各位继续指点! 谢谢!
      

  3.   

    通常如果表里的记录太多的话,需要对该表收集一下统计信息,这样oracle才能得到最优的执行计划。根据我的实际经验,如果没有统计信息,oracle通常采用nest loop的方式连接查询,而又统计信息时,oracle对大表采用hash join的方式进行连接,这样会快很多。
      

  4.   

    看执行计划,where 部分是不是可以避免扫描全表
    数据多的时候索引没有好处,你去掉试一下
      

  5.   

    http://www.cnoug.org/forumdisplay.php?fid=3 
    ORACLE技术中国用户讨论组 » Oracle调优与深入 精华 II:   一篇关于oracle优化的文档   (  1 2 3 4 )
     精华 I:   通过分析SQL语句的执行计划优化SQL(总结)   (  1 2 3 )
    ...
    lz可以参考一下