数据库大概有10000000万数据,要写SQL对这1千万数据进行分组group by和sum 统计,怎么才能提高脚本的效率,可以从多个角度去分析,急!

解决方案 »

  1.   

    如果group by 比较固定的话,可以把这张大表按照这个标准拆分成一些小表,省掉group by的时间
    索引和分区表是需要的.
    如果不是时时需要数据的话,可以利用空闲时间去计算然后存储起来.
    个人意见,没弄过这么大的数据量
      

  2.   

    分区表?可以详细介绍下吗?mdx有人用过吗?用立方体纬度查询
      

  3.   

    建立索引
    存储过程mdx要钱啊
      

  4.   

    如果这些数据是在一个表中,可以对group by后面的字段建分区。
    并且在查询的时候提示oracle使用并发。
    如果这个查询是对全表进行,那么索引就没有必要了。
    如果是在多个表中,并且各个表的数据量差不多,建议连接方式用merge_join。
    最好删掉索引。索引只是在提取部分数据时才有用,像这样对整个表进行提取分析的情况,索引反而可能降低速度。至于多维数据集方面的内容,那是数据仓库的分析服务层要做的事,与数据库层关系不大,
    数据仓库只要做好各个“维度”与“事实”就好了(主要还是对业务的梳理),
    最好是所有的外键关联都做好,但好像这是不可能的,
    生产环境中总是有一些异常数据,如果建了外键,就会有很多数据在抽取时丢失,
    所以数据源视图总是在分析服务中。
    这与速度关系不大。
      

  5.   

    将计算时间分布到插入数据的时候完成
    就是写触发器,在对表进行dml操作的时候,将汇总数据写到其他表中,而不是在执行检索时才汇总数据