美文网首页
MySQL大表数据LIMIT深分页优化

MySQL大表数据LIMIT深分页优化

作者: 风静花犹落 | 来源:发表于2022-05-05 14:42 被阅读0次

    用法

    SELECT * FROM table_name LIMIT [offset ,] rows

    • offset 为可选,表示偏移量(从第几条开始返回数据)。
    • rows 表示返回数据的条数。

    案列

    优化前:

    SELECT * FROM table_name LIMIT 10000000, 10
    

    原理:mysql会先查询出10000010(一千万零一十)条数据,然后丢弃前10000000(一千万)条数据,返回最后10(十)条数据,所以偏移量越大,性能就越差。

    方法一、

    使用主键索引进行关联查询

    SELECT 
        t2.*
    FROM 
        table_name t2
    INNER JOIN (SELECT id FROM table_name LIMIT 10000000,10) t1 ON t1.id = t2.id ;
    

    方法二、

    每次记录当前页的最后一条id,作为下一页的查询条件

    SELECT t.* FROM table_name t WHERE t.id >= last_id LIMIT 10 ;
    

    业务优化

    一、正常情况下没有人会翻到几千页,我们可以通过限制可以翻页的数量解决这个问题,如:百度、谷歌。

    二、手机端可以使用下拉方式进行滚动翻页,每次记录当前页的最后一条id,作为下一页的查询条件。ES可以使用scroll API

    相关文章

      网友评论

          本文标题:MySQL大表数据LIMIT深分页优化

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