大概有5亿条数据1个table,然后table有300个字段,然后是一个老外的设计,系统已经运行了2年多了,没办法了。现在要针对这个table给用户做报表。这个table好像是用mysql的一个水平分割功能,按天做的分割。然后用户要的报表我估计会每次大概会有10-20个用户创建报表,然后生成每张报表大概会在这个300个字段的table执行10-20个select 的 sql~,如果不考虑归并、过滤数据的的话。大家有什么好的方法,或者优化的方法提高sql执行效率吗?哭了啊555
如果有用的话放1000分啊~万分感谢啊55

解决方案 »

  1.   

    我用MYSQL 5.1处理过单表72亿条记录的情况。 不过5.0我没有处理过好么大的!
      

  2.   

    啊啊啊啊~太好了啊~用5.1也可以啊~~我们可以升级啊~~问下mysql 5以上什么版本比较稳定啊~
    另外能介绍一下经验吗?72亿数据啊。。我现在执行的sql都是做统计前100名一类的报表
    sql一般都是:
    select count(*),filed1,filed2.... 一般也就4,5个条件左右
    from bigTable
    where fd1 = xx and fd2 = xx and fd3 = xx 一般也就2,3个条件左右 ;
    估计where出来的数据大概200-1000w条吧。
    group by filed1 .... 一般也就 4,5个
     
      

  3.   


    我觉得我也是简单的查询啊。最多有个group啊~count啊~而且也不要求实时大概执行一个sql能10分钟内做出来就好~另外能具体点吗?我的qq是~~923570482啊~~~希望能问问你啊~我都在线啊
      

  4.   

    牛人。什么应用情形?
    看下infinidb。大表使用infinidb引擎mysql> create table t_innodb(a int)engine=innodb;
    Query OK, 0 rows affected, 2 warnings (0.00 sec)mysql> create table t_infinidb(a int)engine=infinidb;
    Query OK, 0 rows affected (1.49 sec)
      

  5.   

    where fd1 = xx and fd2 = xx and fd3 = xx 一般也就2,3个条件左右 ;
    估计where出来的数据大概200-1000w条吧。你这语句我看不出分区对他有什么用……分了区还有1000w?是不是该把范围缩小点?还是你这就是个全表扫描?