码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 分页优化

时间:2018-03-01 13:24:42      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:temp   ice   业务   定位   bsp   大页   amp   方式   ognl   

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="@Ognl@isNotEmpty(minId)">
    AND id > #{minId}
</if>
<if test="@Ognl@isNotEmpty(maxId)">
    AND id &lt; #{maxId}
</if>

 

MySQL 分页优化

标签:temp   ice   业务   定位   bsp   大页   amp   方式   ognl   

原文地址:https://www.cnblogs.com/ken-jl/p/8487648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!