mysql分表后 如何分页 (总共160个表1500万数据)

u012914916 2015-01-24 10:16:29
mysql分表后,有160个表,有1500万数据,要怎么做分页列表?
之前是想用union all合并160个表的结果集。。但直接卡的数据都出不来。。
请问这里应该怎么做分页,谢谢~~~
...全文
7126 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiong_coming 2017-03-10
  • 打赏
  • 举报
回复
有代码,实现上一页和下一页的分表,不太会呀
cdd415659568 2016-06-21
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复: 要是整体的分页显示那就更简单了 1、每个表的记录数是已知的,应在每次发生变化时记录到目录表中 2、无论是否排序(如果排序只是表的次序不同)至多会 union 两个分表 如假定共3个分表,记录数分别为 90,120,80 总记录数为 290 设分页是每页显示40条,则 第1页 表一的 1 到 40 第2页 表一的 41 到 80 第3页 表一的 81 到 90 + 表二的 1 到 30 第4页 表二的 31 到 70 第5页 表二的 71 到 110 第6页 表二的 111 到 120 + 表三的 1 到 30 ..... 计算起来非常简单 如果三张表 的时间 跟 ID 不连续;而需要排序分页呢?
寂寞的烟客 2015-10-07
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
要是整体的分页显示那就更简单了 1、每个表的记录数是已知的,应在每次发生变化时记录到目录表中 2、无论是否排序(如果排序只是表的次序不同)至多会 union 两个分表 如假定共3个分表,记录数分别为 90,120,80 总记录数为 290 设分页是每页显示40条,则 第1页 表一的 1 到 40 第2页 表一的 41 到 80 第3页 表一的 81 到 90 + 表二的 1 到 30 第4页 表二的 31 到 70 第5页 表二的 71 到 110 第6页 表二的 111 到 120 + 表三的 1 到 30 ..... 计算起来非常简单
那这种是不是只能做“上一页”和“下一页”呢?
beyond__devil 2015-06-20
  • 打赏
  • 举报
回复
赞一个,版主回答的很好!思路很重要!
u012914916 2015-01-26
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
要是整体的分页显示那就更简单了 1、每个表的记录数是已知的,应在每次发生变化时记录到目录表中 2、无论是否排序(如果排序只是表的次序不同)至多会 union 两个分表 如假定共3个分表,记录数分别为 90,120,80 总记录数为 290 设分页是每页显示40条,则 第1页 表一的 1 到 40 第2页 表一的 41 到 80 第3页 表一的 81 到 90 + 表二的 1 到 30 第4页 表二的 31 到 70 第5页 表二的 71 到 110 第6页 表二的 111 到 120 + 表三的 1 到 30 ..... 计算起来非常简单
谢谢徐版主耐心回答。
u012914916 2015-01-24
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
既然你是按域名分表的,那么也就是按域名检索了 所以可以想象到,如果一个域名不在否一个表中的话,那么这个表是不需要参与检索的 这样一来你的检索范围不就缩小了很多了吗? 当一个表中包含有若干个不同域名时,你需要建一个目录表,指明某一类域名在某个表中 检索时先查目录表,得到可能在哪些表中,然后再在这些表中查找 如果你使用 mysql 提供的分表功能,那么就要简单多了
这个域名和表名的对应关系我有做,但是现在打开这个分页列表,应该是所有表所有域名的数据,再分页,不是某部分域名或某部分表。
xuzuning 2015-01-24
  • 打赏
  • 举报
回复
既然你是按域名分表的,那么也就是按域名检索了 所以可以想象到,如果一个域名不在否一个表中的话,那么这个表是不需要参与检索的 这样一来你的检索范围不就缩小了很多了吗? 当一个表中包含有若干个不同域名时,你需要建一个目录表,指明某一类域名在某个表中 检索时先查目录表,得到可能在哪些表中,然后再在这些表中查找 如果你使用 mysql 提供的分表功能,那么就要简单多了
u012914916 2015-01-24
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你这是自己做的分表,那么分表条件是什么呢? 如果分页的结果不能通过分表条件框定范围,那你的分表是失败的 不是说不能用 union,而是 union 的不是全部,而是经分表条件筛选后的部分表
我的sql语句是这样的 (字段不多且都有用就用的*号): select * from t1 union all select * from t2 union all select * from t3.....union all select * from t160
u012914916 2015-01-24
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你这是自己做的分表,那么分表条件是什么呢? 如果分页的结果不能通过分表条件框定范围,那你的分表是失败的 不是说不能用 union,而是 union 的不是全部,而是经分表条件筛选后的部分表
我的sql语句是这样的 (字段不多且都有用就用的*号):
u012914916 2015-01-24
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
你这是自己做的分表,那么分表条件是什么呢? 如果分页的结果不能通过分表条件框定范围,那你的分表是失败的 不是说不能用 union,而是 union 的不是全部,而是经分表条件筛选后的部分表
徐版主好~我表里的数据主要字段是URL地址,有1600个域名,我是根据域名分成了160个表。
xuzuning 2015-01-24
  • 打赏
  • 举报
回复
你这是自己做的分表,那么分表条件是什么呢? 如果分页的结果不能通过分表条件框定范围,那你的分表是失败的 不是说不能用 union,而是 union 的不是全部,而是经分表条件筛选后的部分表
xuzuning 2015-01-24
  • 打赏
  • 举报
回复
要是整体的分页显示那就更简单了 1、每个表的记录数是已知的,应在每次发生变化时记录到目录表中 2、无论是否排序(如果排序只是表的次序不同)至多会 union 两个分表 如假定共3个分表,记录数分别为 90,120,80 总记录数为 290 设分页是每页显示40条,则 第1页 表一的 1 到 40 第2页 表一的 41 到 80 第3页 表一的 81 到 90 + 表二的 1 到 30 第4页 表二的 31 到 70 第5页 表二的 71 到 110 第6页 表二的 111 到 120 + 表三的 1 到 30 ..... 计算起来非常简单
u012914916 2015-01-24
  • 打赏
  • 举报
回复
引用 7 楼 Novolee 的回复:
你这个有特殊排序条件吗?没有的话直接逐表读取所需数据就行了。
没排序,只要把所有数据列出来就好了,是160个表1500万数据都得弄出来做分页。。。逐表读取的话不行吧?!
李睿_Lee 2015-01-24
  • 打赏
  • 举报
回复
你这个有特殊排序条件吗?没有的话直接逐表读取所需数据就行了。

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧