分享一个关于解决Mysql limit分页在数据很多时的查询速度慢问题

17-09-18 15:41 字数 458 阅读 1821

Limit 分页的语法大家都知道limit offset rows
加入我有一张表有400+数据

d3719b2c10b5b38448a81c3cf64b6939.png

我现在要做分页功能,我的sql是这样的

select xxx,xxx,xxx,from tablename where xxx,xxx,xxx order by xxx,xxx limit 15,15

假如在where条件下共有39条数据,我每页显示15条数据,那么第二页是limit 15, 15,第三页是limit 30, 15
我们大多情况下回直接这么写,因为我不知道最后一页应该有多少数据,所以我直接limit {页码}, {每页显示数量}
这样写在前两页是没有问题的,但是查到最后一页的时候会非常慢。
经测试在前两页我的执行时间是0.5s之内,还能接受, 但是最后一页的执行时间却是2m多!!!
怎么解决这一问题呢,经过我的摸索,我发现如果提前把最后一页的rows算出来,速度会非常快。
比如在这个问题里最后一页的查询如果我们写成limit 30, 9,那么查询时间就大大缩减了。
解决办法很简单,我们只需要拿着where方法把总数算一下,然后把sql处理下就行啦。

0人点赞>
关注 收藏 改进 举报
0 条评论
排序方式 时间 投票
快来抢占一楼吧
请登录后发表评论