MySQL 分页优化

Posted ken-jl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 分页优化相关的知识,希望对你有一定的参考价值。

mysql 用 LIMIT offset, length 进行分页。但当表记录数很大,会发现大页数的查询时间明显比小页数的查询时间大。

MySQL并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,当 offset 特别大的时候,效率就非常的低下

解决方式一:在业务上限制总页数。

解决方式二:借助索引,快速定位。

方式二是比较常用的。

示例:device_version_stat 表记录数很大,如果需要把该表的数据导出到 excel ,后面的数据查询会相对慢。如果是按 id 降序,可以借助 id 主键先快速定位到查询范围,

第一页的 maxId = null,第二页的 maxId = 具体的某个值1,第二页的 maxId = 具体的某个值2,...

在查询时带上以下条件,查询效率就会高很多,

<if test="@[email protected](minId)">
    AND id > #{minId}
</if>
<if test="@[email protected](maxId)">
    AND id &lt; #{maxId}
</if>

 






以上是关于MySQL 分页优化的主要内容,如果未能解决你的问题,请参考以下文章

PHP+MySQL高效的分页方法,如何优化LIMIT,OFFSET进行的分页?

如何优化Mysql千万级快速分页

mysql百万数据分页查询4秒,求教怎么优化

Mysql分页优化(100000条数据以上的查询),求指点~方法~ 有例子更好,网上的没看懂~

MySQL大数据量分页查询方法及其优化

MySQL大数据量分页查询方法及其优化