比如1个月一个表,表结构简单 (id,商户号,时间,数量) 表示某个商品某天的销量
那么现在我要查询a月分到b月分的所有商户销量报表 结构如下
商户号,时间,数量
由于数据量大,使用数据分页,一页显示10条, 如果以商户号排序到是很好理解,也很好操作,我可以先在商户表里面查询出要显示哪10个商户,然后再到数据表里面选择这些商户的数据.
但是现在问题来了,如果用户想要通过数量排序来分页呢?怎么办,难道把各个表里面数据查入到一个表里面再来计算分页等等?
求大神支招.
------解决思路----------------------
没太明白,我觉得这个不是问题啊,所以应该是我理解有误
传统的分页可用临时表也可以不用临时表
------解决思路----------------------
建议可以用空间换时间的方法,
单独建一个表用于保存数量汇总的统计结果,并用触发器实时同步数据更新..
需要按数量排序查询时直接调用即可.
------解决思路----------------------
详细一看,还真是我理解错了,你查询的是统计的结果后的数量,这个,只有统计后再去分页了
如果要提高效率,常用的办法是,定时的将一些数据统计后转为化静态。
------解决思路----------------------
错了错了. 不同的表里面有相同的商户啊.得几个表里面汇总的数据才对啊.
上面的方法全部不适用- -!

------解决思路----------------------
貌似不行,有这种可能,每个月不在前10的商户,却,在所有月份加起来数量总和在前10里面的情况。
如果你这个统计【商户号,时间,数量】经常用到的话,或者虽然不是经常用到但数量却非常大的话,建议把旧的月份定期统计好存储起来,要查的时候,直接查统计好的,结合最新的,即可。这样只需要实时统计最新的那个月份的数据,这就是2楼的空间与时间的转换的方法。
------解决思路----------------------
你是说,旧的月份的数据也有变的可能性?
处理方式,我觉得可以从几点出发
1、忽略不计,还是按照定时存储旧数据统计结果的方式。考虑的出发点是,一:如你所说可能性比较小,二:一般看统计信息,特别是旧的数据,一般只是想了解个大概,即使有细微的差别,也不会影响决策。用这个方法,可以保证有较高的效率。但是你必须让用户知道旧的数据,可能不是最新的,并可以提供一个主动的,类似刷新旧数据统计为最新的功能。
2、时间上的挪移,每次数据变更的时候,实时加减统计信息,虽然保存的时候麻烦了点,那查询统计时是很方便的。
3、实时统计所有表信息,可以加到临时表,也可以用派生表,把所有表的关注信息UNION ALL到一起,再汇总分页,数据量大的时候,我想应该不可取。
------解决思路----------------------
有多个排序规则的查询的基础数据分表保存没意义吧,每次查询都有把这些表都union一起。
谈谈经验
1、如果数量很大要分很多页,其实用户不会一页页的翻,尽量在一页,实在多就做下载吧
2、如果不愿意改就先读到数组里再排序(用程序实现)