php - 分表查询如何分页
天蓬老师
天蓬老师 2017-04-11 10:38:44
[PHP讨论组]

比方说我一个业务涉及多张表,记录出来要分页,如果同一张表用limit,多张表要怎么做呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
ringa_lee

需要一張臨時表,記錄每張表的表名和id,對接多表。這樣可以實現分頁.

PHP中文网

可以先把两张表的联合查询做成一个视图,取数据从视图取就可以像一个表那样操作了

阿神

UNION合并结果,然后走正常的LIMIT OFFSET即可。

伊谢尔伦

可以用视图的概念,创建一个虚拟的表。

怪我咯

如:

id  40      80      120  ...
    tab1    tab2    tab3 ...

pagesize=15;
page = 5

table_index = ceil((pagesize*page)/40); //定位表:tab2
if(pagesize*page+pagesize > table_index*40){
    
    //跨tab2 与 tab3 ,下来获得tab3的数据
    table_next_index = table_index  + 1
    numbers = pagesize*page+pagesize - table_index*40; //既要从tab3中取numbers条数据
    
}else{
    
       //直接从tab2中取数据,完成分页
    
}

上面是伪代码,主要用来说明思路。
可以将这种分页方法封装起来,传入参数page、pagesize、分表size,变为通用的分表后分页类。
不过对于各个分表汇总的总数,还是得通过每张表计算。还可以维护一个表,专门用来记录总数,也可以

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号