mysql查询优化limit ——小记

原创
2017/07/28 22:21
阅读数 11

如下2个SQL语句 执行时间对比:

SELECT a.* from usertb a INNER JOIN (SELECT id from usertb ORDER BY uname limit 1000000,10) b WHERE a.id = b.id;  

用时 77秒;

SELECT usertb.id,usertb.uname from usertb ORDER BY uname limit 1000000,10;

用时 109秒;

 

差距蛮大的,主要用到了 "延时关联" 技术 ;

 

针对limit 优化有很多种方式,
1 前端加缓存,减少落到库的查询操作
2 优化SQL
3 使用书签方式 ,记录上次查询最新/大的id值,向后追溯 M行记录。
4 使用Sphinx 搜索优化。
对于第二种方式 我们推荐使用"延迟关联"的方法来优化排序操作,何谓"延迟关联" :通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
在线直播报名
返回顶部
顶部