Mysql 分页优化

作者: 新亮笔记 | 来源:发表于2016-07-13 12:10 被阅读420次

互联网公司拥有海量数据时,页面加载慢会直接导致用户体验的下降,用户体验决定着产品的未来。
所有一个高效的分页变得尤为重要。

优化原则

尽量减少扫描数据库中记录的条数。

常用SQL

select * from `表名` order by id desc limit 0,20;

当数据量变大时

select * from `表名` order by id desc limit 100000,20;

limit 100000,20 的意思扫描满足条件的100020行。

优化后SQL

//查询上一页数据
select * from `表名` where id <=100020 order by id desc limit 20;
//查询下一页数据
select * from `表名` where id >100020 order by id asc limit 20;

每次查询只扫描20行。效率提高了!

PS : 面试也经常会被问到。


Thanks ~

AD:


PHP工程师订阅号

相关文章

网友评论

  • 牙小木:如果非要select *,id为主键,仍要有n多回行。

    可以select * from `表名` inner join(select id from "表名" limit (100020,10)) as tmp ,必要情况force index.
  • voidMain:如果id为UUID 怎么优化
    新亮笔记:@voidMain 文中 id 是表主键, 具体 sql 可以用 explain 进行分析~
  • 大黄蜂coder:如果每次order by的数据不一样,程序判断会很多,而且每次查询都要知道上一次查询的id
    新亮笔记:@大黄蜂coder 具体情况,具体分析吧,每次执行之前,用 explain 分析一下~

本文标题:Mysql 分页优化

本文链接:https://www.haomeiwen.com/subject/niisjttx.html