limit offset,N 当offset非常大时,效率极低。 

原因是:mysql并不是跳过offset行,然后单取N行。而是取offset+N行。

返回时,放弃前offset行,返回N行。效率较低,当offset越大是,效率越低。

优化方式:

1. 非技术手段限制分页,比如百度翻页一般不会超过70页,谷歌不会超过40页。

// 计算总的记录数
$total = ...
// 定义每页显示数量
$perpage  = 10;
// 计算总的页数
$pagecount  = min(ceil($total/$perpage),70);

2. 不用offset,用条件查询。

$sql = "select * from user limit 10,10";
// 转换成
$sql = "select * from user where id>10 limit 10";

缺点:如果数据有被删除,则取出的数据结果会不一致。

解决方案:

数据不进行物理删除(可逻辑删除)最终在页面上显示数据时,逻辑删除的条目不显示即可。

一般来说,大网站的数据都是不物理删除的,只做逻辑删除,比如is_delete=1

3. 如果非要物理删除,还要用offset精确查询,还不限制用户分页,怎么办?

我们现在必须要查,则只查索引,不查数据,得到id,再用id去查具体条目,这种技巧就是延迟索引

第一步:取出数据的id

$sql = "select * from user limit 10000,10"; // 没有用到索引
// 转换成
$sql = "select id from user limit 10000,10"; // 用到索引覆盖

第二步:根据取出id再查具体的数据,因为使用id查询比较快,因为id是主键。

因此使用一个连接查询,就可以,我们使用内连接。inner join / left join / right join

转载于:https://www.cnblogs.com/chenjiacheng/p/6628353.html

MySQL中的翻页优化和延迟缓存相关推荐

  1. 用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载

    用 Python selenium爬取实时股票新闻并存入mysql数据库中 1.分析需求 2.创建表 3.分析需要爬取的网页内容 4.python里面selenium进行爬虫操作 1.添加包 2.连接 ...

  2. mysql+翻页性能,mysql 翻页优化

    mysql翻页优化 对于翻页,我们通常是用 select fields from table limit 100,10 但是当要越翻后面的页数之后,耗时变得很长 select fields from ...

  3. MySQL中的limit分页优化

    MySQL中的limit分页优化 MySQL的limit优化 mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,my ...

  4. Mysql中查询速度的优化

    2019独角兽企业重金招聘Python工程师标准>>> mysql中查询速度的优化 1.查看每一个表的数据量 2.left join的时候尽量减少表的大小,通过临时表,查询条件去限制 ...

  5. elasticsearch翻页优化

    ES 翻页优化 ES翻页 ES 翻页,有下面几种方案 from + size 翻页 scrool 翻页 scrool scan 翻页 search after 翻页 from + size 翻页 PO ...

  6. Bootstrap 分页导航中的翻页组件

    分页导航中的翻页 一些简单的网站,比如博客或者杂志网站,希望用更少的标记和样式,来创建简单的"前一页"和"后一页"的翻页导航. Bootstrap中,只需为列表 ...

  7. 倒序查询_mysql大表分页查询翻页优化方案

    mysql分页查询是先查询出来所有数据,然后跳过offset,取limit条记录,造成了越往后的页数,查询时间越长 一般优化思路是转换offset,让offset尽可能的小,最好能每次查询都是第一页, ...

  8. MYSQL数据库的翻页

    这个是我自己想出来的,当时只想到这么个笨方法. 看到不少人都在问MYSQL怎么翻页,现在拿出来给大家借鉴一下. 如果有好的方法请留言.大家互相探讨. <script language=" ...

  9. Linux的vim编辑器中的翻页命令

    当我们进入Linux的vim编辑器查看脚本时,按上下键查看是不是非常慢?这个时候就要用到我们的翻页快捷键了,快捷键命令如: 整页翻页命令为:    Ctrl + f 键   f 的英文全拼为:forw ...

最新文章

  1. Python os.chdir() 方法用于改变当前工作目录到指定的路径。
  2. b. Suffix Zeroes
  3. python连接阿里云odps
  4. 数据结构二分法算法的步骤_数据结构与算法之算法思想:二分法搜索实现(python)...
  5. 无法对 null 引用执行运行时绑定_你真的懂this吗?聊聊默认绑定,隐式绑定,显示绑定,new绑定...
  6. java中的23种设计模式_Java开发中的23种设计模式详解
  7. 根据目标选择减肥方法 少做无用功
  8. node08-express
  9. linux如何建立隐藏目录,【Linux】文件与目录的默认权限与隐藏权限
  10. 深度解析双十一背后的阿里云 Redis 服务
  11. C++从零实现简单深度神经网络(基于OpenCV)
  12. 嵌入式电路设计(dsp电路设计)
  13. 苹果sf字体_原来苹果偷偷爱了这些字体
  14. 安装hmc会依赖bios时间吗_拯救者R7000 2020/GTX 1650 安装 ubuntu 20.04 双系统
  15. 设置JAVA-HOME的用处
  16. 会计计算机学什么软件有哪些,会计一般要学什么软件
  17. 斗鱼赴美上市 穷途末路还是绝处逢生?
  18. 《成语接龙》之成语表
  19. SQLite 数据库存取图片(QT方式)
  20. 怎么样从零基础开始学习Java

热门文章

  1. WebDev.WebServer40.exe已停止工作
  2. CV卷得厉害,研究机器学习还能做什么?
  3. 比手工模型快10~100倍,谷歌揭秘视频NAS三大法宝
  4. 民办大学计算机专业教师,干货!民办大学和独立院校教师创新排行榜,这五个高校最亮眼...
  5. CVPR 2020 顶会 AI学术检索工具
  6. java中JOptionPane类_Java学习之JOptionPane类
  7. 如何准确估计机器人的状态,增强机器人控制的精度及稳定性
  8. 你还在担心开车看不到路标吗?我这这有个路标分类的来玩玩啊(有源码有数据集)
  9. 理解SSD多盒-实时目标检测
  10. 保存时间 默认_操作技能|WORD文档没保存,有办法恢复吗?