首页 新闻 会员 周边 捐助

设计超过1000W记录的查询与统计

0
悬赏园豆:20 [已解决问题] 解决于 2008-05-27 16:36
<P>最近在改进一个老系统查询效率,数据量也不是很大,整个数据库就3-5G,单表记录1000W差不多,在查</P> <P>询的时候碰到了查询超时的问题,比如查询一个月的记录,大约100W-500W,做过信息系统的大概都知道</P> <P>,查询这样的数据量,不是超时就是要等了几十秒到几分钟,做起统计来,就更慢了。前段时间一直在</P> <P>优化速度上考虑,将执行脚本改为存储过程、制定合适的索引,改进SQL条件。速度虽然有了很大的提升</P> <P>,但还是不尽人意,为什么呢??无论怎么优化,几百万的数据量放在那里,你还是等段时间才能出结</P> <P>果,而且还是会有出现超时的可能。因此我就换了一个角度:我为什么要让他们查询到这么多的记录,</P> <P>并把这些记录都放在一个界面上,这么多记录他们看的过来么?想到这里,我意识到可能在设计和解决</P> <P>这个问题的时候走了极端,应该跳出来思考,不过还不能系统的解决!我经验不够,希望各位指点一二</P> <P>。以下是我当前的思想:<BR>回到信息系统的最初设计原理,首先是录入数据,然后查询数据,然后有报表、数据导出,在数据量小</P> <P>的情况下,这个过程是很合适的。但数据量大了以后就出现一个问题,首先是报表,一个有100W行数据</P> <P>的报表需要打印多少页有算过么??最少是1万,这样就不可能被打印,从而失去了意义,接下来是导出</P> <P>,数据的导出是有意义的,也是必须的。一般信息的导出都是本地查询后保存的结果,导出的格式也有</P> <P>相应的设置。如果我不容许用户查询这么多数据,那就很有可能限制了数据导出的使用,这样的限制可</P> <P>能会带来致命的后果。</P>
小猴子的主页 小猴子 | 初学一级 | 园豆:100
提问于:2008-05-26 10:30
< >
分享
最佳答案
0
一点建议: 数据量很大统计起来很费时,我们可以建一张冗余表,存放统计的中间结果,例如你可以有这么一张表。 XxxDataDaylyReport 这张表中是每天的一个数据的汇总计算;可以在数据库中设定一个Job每天的凌晨计算前一天的汇总统计,并将统计的结果插入到XxxDataDaylyReport表中,以后如果有按月或者按年统计的,直接在这张表的基础上做统计,速度就可以大幅提高了。 至于报表中要打印100w行数据是没有意义的,报表要有一个汇总结果。按月,或者按年统计才有意义,怎么会出现100w行数据呢?
玉开 | 大侠五级 |园豆:8822 | 2008-05-26 13:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册