我要从 4千万的的数据表中查询 2千万的数据,然后对这2千万的数据进行分组求和,然后排序,再取出前100的记录,有什么好办法,请高手赐教!!其中查询过滤的字段collect_date是一个时间类型(其中需要的查询范围为:2011-05-01 到 2011-05-26),我考虑在这个字段上建立的是位图索引,发现这个查询相当的慢 啊!!!但是建立Btree索引,根本就不会使用索引,因为数据量太大了.
注意:查询出来经过分组求和,排序后,大概的数据量是4万条左右。请问,有什么更好的办法,客户说这个查询太慢了,我都无语了,这么大的数据量,查询不慢才怪,可是我已经黔驴技穷了!!!!
急~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    看来在作一个数据库设计时,就一定要有先见之明,对大表一定要预计,并坚决用partition table.
      

  2.   

    如果只从SQL层面优化的话,
    首先查看执行计划,看哪些查询造成的低效,
    其次再想办法解决低效部分(例如加索引,强制HINT索引.....等)
      

  3.   

    问题解决了,结果不是sql查询问题,也不是索引问题,而是内存、cpu、swap耗尽,有个服务进程关掉,就好了,查询最多两分钟就出来。不过通过表抽样分析以后,查询更快了。
    所以遇到oracle问题,首先需要查看系统资源,再看sql性能。