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

MySQL优化之—limit

时间:2016-10-04 20:51:49      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:通常情况下MySQL数据库表查询通过limit关键字进行分页,当数据量不多时,能够非常快速返回数据据,但当数据达到百万级别是,当前页数字越大响应时间越长。

举个例子:用户表 200w 数据   

select * from t_user limit 0,20

  这是没有问题的,数据很快返回  

select * from t_user limit 1000080,20

上面这条语句返回比较慢。

原因:limit 0,20 仅扫描了20条数据,就返回结果,而 limit 1000080,20 扫描了1000080条数据,并去掉前面1000080条,返回剩下的20条数据。

解决方案1:记录上一次的最大maxId=1000079, 那么语句可以优化为:
select * from t_user where id>1000079 order by id limit 20

扫描20行。

总结:   当一个数据库表过于庞大,LIMIT offset, length中的offset值过大,则SQL查询语句会非常缓慢,你需增加order by,并且order by字段需要建立索引

解决方案2:如果limit的offset值过大,设置一个offset最大的,超过了可以另行处理,如:当偏移超过一半记录数的时候,先用排序,这样偏移就反转了。
解决方案3:>limit限制优化法把limit偏移量设置一个最大值。。超过这个数不查询数据库,直接返回空数据。

MySQL优化之—limit

标签:

原文地址:http://www.cnblogs.com/xiaoxiaoshutong/p/5931141.html

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