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