美文网首页
MySQL-跨N库分页

MySQL-跨N库分页

作者: 花神子 | 来源:发表于2020-01-08 14:59 被阅读0次

方法一:全局视野法

(1)SQL改写,将

order by time offset X limit Y;

改写成

order by time offset 0 limit X+Y;

(2)服务层对得到的N*(X+Y)条数据进行内存排序,内存排序后再取偏移量X后的Y条记录;

这种方法随着翻页的进行,性能越来越低。

方法二:禁止跳页查询法

(1)用正常的方法取得第一页数据,并得到第一页记录的time_max;

(2)每次翻页,将

order by time offset X limit Y;

改写成

order by time where time>$time_max limit Y;

以保证每次只返回一页数据,性能为常量。

方法三:允许模糊数据法

(1)SQL查询改写,将

order by time offset X limit Y;

改写成

order by time offset X/N limit Y/N;

性能很高,但拼接的结果集不精准。

方法四:二次查询法

(1)SQL改写,将

order by time offset X limit Y;

改写成

order by time offset X/N limit Y;

(2)多页返回,找到最小值time_min;

(3)between二次查询

order by time between time_min andtime_i_max;

(4)设置虚拟time_min,找到time_min在各个分库的offset,从而得到time_min在全局的offset;

(5)得到了time_min在全局的offset,自然得到了全局的offset X limit Y;

相关文章

  • MySQL-跨N库分页

    方法一:全局视野法 (1)SQL改写,将 order by time offset X limit Y; 改写成 ...

  • 炸!业界难题,跨库分页的几种常见方案

    为什么需要研究跨库分页? 互联网很多业务都有分页拉取数据的需求,例如: (1)微信消息过多时,拉取第 N 页消息;...

  • 炸!业界难题,跨库分页的几种常见方案 - (from:58沈剑_

    为什么需要研究跨库分页? 互联网很多业务都有分页拉取数据的需求,例如: (1)微信消息过多时,拉取第 N 页消息;...

  • 跨库分页

    场景:两个库,以ID为分库键,以time为排序键,每页10条,查询第5页单库查询:order by time of...

  • 跨库分页

    一、需求缘起 分页需求 互联网很多业务都有分页拉取数据的需求,例如: (1)微信消息过多时,拉取第N页消息 (2)...

  • 跨库分页

    互联网很多业务都有分页拉取数据的需求,业务中经常按照时间time来排序order by,在数据量不大时,可以通过在...

  • 业界难题-“跨库分页”的四种方案

    业界难题-“跨库分页”的四种方案 一、需求缘起 分页需求 互联网很多业务都有分页拉取数据的需求,例如: (1)微信...

  • 数据库操作

    数据库扩展 PHP数据库操作之查询分页数据 limit m,n // 从第m+1条开始,查询n条数据$page =...

  • 30_分页器

    分页器 一、简单分页(查看第n页,每页显示n条) settings.py 文件 路由 Serializers (序...

  • MYSQL笔记整理-001-创建+插入+更新+删除

    一、创建表 语法:create table XXX() 具体代码:MYSQL-具体代码-创建表 - 简书 if n...

网友评论

      本文标题:MySQL-跨N库分页

      本文链接:https://www.haomeiwen.com/subject/uslsactx.html