mysql limit优化
AI-摘要
CaiCai GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
本文最后更新于 2024-07-11,文章内容可能已经过时。
描述
select * from table limit 500000,50
比较大的值,MySQL会对前面的数据进行读取和放弃,导致性能较差
加限制条件
比如 select * from table where id > #{id} order by id desc limit 50
这里可以通过记住上一页的最后一条记录的某个唯一标识符(如ID),并在下一页查询时使用这个标识符作为起点。
也可以使用ID
范围来替代OFFSET
。例如,如果你知道上一页的最后一条记录的ID是1000,你可以查询ID大于1000的记录,并限制返回的记录数。
通过子查询加限制,
select * from table where id in (select id from table order by id desc limit 500000,50)
因为子查询走的是覆盖索引,子查询只用到了索引列,如果索引在内存中就直接走内存中的索引,如果不在,如innodb,则会去查找data下的.ibd文件,根据当前查找模式和内存,考虑部分加载到内存中,快速定位数据在磁盘中的位置,然后进行返回,尽管offset比较大,查询效率也不会太低。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 caicaiBlog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果