Mysql深度分页优化思路和方案

前言

在我们业务表的数据量很大的时候,前端有一个分页查询的需求,如果分页很深的时候,如何优化查询速度

例如:我们系统有一张业务数据表,我们需要根据前端传过来的分页下标pageIndex和每页查询的数量pageSize两个参数以及其它的条件来查询这张业务表的里面的对应的数据并且返回给前端。


一、普通分页的优化方法

一般分页不是很深的情况下,我们一般可以通过以下方法解决大部分的分页问题

  1. 通过增加主键排序,例如:order by id
  2. 如果需要根据时间排序,就给常用的字段增加索引,包括时间字段。例如:order by create_time

以上两种手段其实可以解决大部分的分页问题了。但是如果后面的页数很深了,比如从100w条开始取20条,我们就会发现再执行sql语句就会非常慢,这是因为mysql的优化器在发现sql查询的行数超过一定比例的时候,就会自动转换成全表扫描,可以自己模拟数据测试一下。

二、什么是Mysql的深度分页?

查询偏移量过大的分页的场景我们称为深度分页,例如以下sql语句就是一个典型的深度分页场景

SELECT * FROM t_xxx ORDER 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值