![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
相关问题
例如我们有n个表
表名 数据量
data_1 12154
data_2 9845
data_n 10032
结构都一样的,id、name、group三个字段
正常情况下的分页就不说了,目前 n 个表 的数据,要做某一组的分页,问题是如果某一页的数据在多个表之内,我的思路是否高效就不知道了,请高手指教。
我的做法是先统计一下各表在要求条件下的数据量,然后取出需要联合查询哪两个表,例如:where group=2 的条件,每页显示10条数据。
先统计第一个表 data_1 中的数据是否够当前页的数量
select count(id) as num from data_1 where grouo=2
如果数据够一页显示的数量,则返回一个结果,就只查询这个表
如果不够10条,则记录下这个表的名字,然后统计第二个表。
直到数据够当前页的数量后,返回全部表名,然后 union 联合查询。
例如下面的数据, where group=2 各表数据量
data_1 26
data_2 5
data_3 11
分页显示第一页和第二页的时候,查询第一个表data_1就行了
查询第三页的时候,页数据起始的数量是 20,结束的数量为 30 ,则需要查询 data_1 和 data_2 两个表。
呵呵,不知道我说明白了没有,大家又没有更好的办法来解决分表情况下的分页显示问题。
谢谢!
提问者:Drifter 08-22 12:12
答复

