mysql在执行limit时的优化

看mybatis的分页时,去了解了下mysql的分页查询原理。

select * from A表 where 1=1  limit 10000,10

从A表中查询出符合条件的数据,该数据从第10000条开始到10009,也就是说查询出10条结果,程序需要扫描满足条件的10010行,最后只留下10行需要的数据,显然效率十分低。

而如果是limit 10,则只是扫描10行,这样效率会大大提高。

鉴于此,在查询时尽量用条件约束条数,使用limit n,而不是limit m,n。

如下优化案例

mysql> SELECT * FROM `frontuser` where id>=(select id from frontuser limit 4900000,1)limit 10;    //0.238 ms  //很 明显,这 种方式胜出 .
mysql> SELECT * FROM `frontuser` limit 4900000,10;  //1.054 sec;

看过一篇相关的文章,在优化查询的时候有值得借鉴的地方。

参考文章:http://www.jb51.net/article/46015.htm


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值