mysql在执行limit时的优化

来源:互联网 发布:mac删除文件命令行 编辑:程序博客网 时间:2024/06/05 17:50

看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


0 0
原创粉丝点击