分页查询慢的优化方式

编程入门 行业动态 更新时间:2024-10-10 23:20:08

<a href=https://www.elefans.com/category/jswz/34/1769545.html style=分页查询慢的优化方式"/>

分页查询慢的优化方式

大家好呀,我是柚子。这篇文章的起因呢,是因为项目中有一个分页查询比较慢的sql需要优化。
分页查询也是我们项目中经常使用的查询方式,那么如何优化呢?

文章目录

  • 案例
  • 一、先定位偏移位置的 id,然后往后查询,适于 id 递增场景
  • 二、可以使用 id 限定优化
  • 总结


案例

场景:表里有大量数据,一次性查询出来肯定会非常慢,那么考虑使用批量查询的方式。
方法一:根据分页和计算偏移量查询,如每200条分一次页,但是会存在一个问题。如果表里的数据量越大,这种方式会越慢,因为需要计算偏移量。
方法二:根据分页和主键查询,首先查出总记录数,再用总记录数算出分页页数,来循环取出数据。假如是倒序,用每次查出的最后一个主键id,小于这个主键id,每批向前取200条,这样就大大提高sql效率了。


提示:以下是本篇文章正文内容,下面案例可供参考

一、先定位偏移位置的 id,然后往后查询,适于 id 递增场景

select * from order where type=1 limit 100000,1;

第1条语句:3674ms

select id from order where type=1 limit 100000,1;

第2条语句:1315ms

select * from order where type=1 and
id>=(select id from order where type=8 limit 100000,1)
limit 100;

第3条语句:1327ms

select * from orders where type=1 limit 100000,100;

第4条语句:3710ms

从上面也是可以看出:
第1条直接select * 的话不走索引,会比较慢
第2条直接查询id,就走了索引,相对比较快
第3条虽然select *,但是先定位偏移位置的id,然后向后查询,也是比较快的

二、可以使用 id 限定优化

假设数据表的id是连续递增,则根据查询的页数和查询的记录数可以算出查询的id的范围,可使用 id between and:
sql如下(示例):

select *
from order
where type = 1and id between 1000000 and 1000100
limit 100;

总结

那么以上就是分页查询的优化方式了,小伙伴们可以采纳哦!


╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯

更多推荐

分页查询慢的优化方式

本文发布于:2024-03-04 19:16:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710168.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分页   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!