大概有5亿条数据1个table,然后table有300个字段,然后是一个老外的设计,系统已经运行了2年多了,没办法了。现在要针对这个table给用户做报表。这个table好像是用mysql的一个水平分割功能,按天做的分割。然后用户要的报表我估计会每次大概会有10-20个用户创建报表,然后生成每张报表大概会在这个300个字段的table执行10-20个select 的 sql~,如果不考虑归并、过滤数据的的话。大家有什么好的方法,或者优化的方法提高sql执行效率吗?哭了啊555
如果有用的话放1000分啊~万分感谢啊55
如果有用的话放1000分啊~万分感谢啊55
解决方案 »
- javamail发送邮件 设置收件人地址
- JAVA 参数传值问题
- APPLET求助高手,大侠
- 有关使用jtable的几个小问题,请高手指点。
- 初始化順須包括構造方法的調用順序
- 为什么给代码加static,静态的疑问??????????请大家帮帮我看看这是如何执行的
- 计算出2001年5月第三个星期五是几号怎么写程序?
- 为什么将集合变成数组后输出不成功?
- 菜鸟之问:一个关于继承的程序......
- 在JB6的Application中,为什么AWT组中只找到复选框(checkbox)而找不到单选框(radiobutton)?
- 感谢帮助!java数组的排序!
- reahat下调用FileInputStream的问题
如果写入频繁,且报表实时性要求不高的话,可以定期重新统计B表记录
比如像oracle的物化视图等。或者对sql语句本身有没有什么意见。或者有人有这方面经验的谈谈啊555
再具体就是你的业务。
一就是把不经常更新的数据放入单独的表,主要用于报表打印,然后定期做同步,打印报表就在这这表上操作(像数据仓库一样)
二 mysql 集群
三 使用Amoeba for mysql,做负载均衡和数据分片
mysql5.1已经支持分区了,可以利用分区来分别并行统计。其他索引之类的相信已经做过了,,就不多说啦。能想到的也就这么多了。楼主提到oracle的物化视图,其实也是oracle利用了它本身的schedule(10g之前叫job),在固定的时间周期内(由定义物化视图时决定,这个可以看物化视图的相关知识),把源数据表的统计内容提交到中间表(所谓的物化视图其实就是一张物理表)。
mysql有什么 m s模式~不知道能否使用。我在5亿条数据里检索时间大概是30分钟。但是几个sql并发执行的时候比较有问题。目标是10分钟。