美文网首页
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