返回顶部
首页 > 资讯 > 数据库 >MySql深度分页慢sql原因
  • 112
分享到

MySql深度分页慢sql原因

mysqlsql数据库 2023-09-12 12:09:40 112人浏览 薄情痞子
摘要

先说解决方案:索引排序+索引覆盖+延迟关联。 比如查询语句如下: select * from user order by  createTime limit 500000, 10;  延迟关联,即先查主键 id,然后根据 i

先说解决方案:索引排序+索引覆盖+延迟关联。

比如查询语句如下:

select * from user order by  createTime limit 500000, 10;

 延迟关联,即先查主键 id,然后根据 id 查其它字段:

select * from user u,(select id from user order by createTime  limit 500000, 10) t where u.id=t.id;

 详细原理如下:

随着 Mysql limit 的值越来越大,查询可能慢,比如:

select * from user order by createTime  limit 500000 , 10;

慢的真正原因,不是因为扫描了 500000 行,而在于把这 500000 行数据重新排序。

explain 如下:

 可以看到 Extra 是 Using filesort,表示外部排序,

 索引有两个功能:查找和排序。

大家一般对索引的查找功能比较了解,却忽视了索引的排序功能,索引中的数据是已经排好序的,如果从索引中拿到的数据顺序跟我们需要排序的顺序是一致的,那就不要重新排序了。

怎么解决 Using filesort 呢?答案是给order by 后面列使用索引; 

select * from user order by  id limit 500000, 10;  --270ms


 延迟关联:

延迟关联就是指先拿到主键 id,然后再根据 id 查询 select *

select id from user order by id limit 500000, 10;

 Extra 的中 Using index 就表示“覆盖索引”,表示整个查询过程仅读取了索引中的数据而没有回表查询。

合并在一个 sql 语句中:

select * from user u,(select id from user order by id limit 500000, 10)  t where u.id=t.id; --83ms


索引覆盖:

mysql B+树索引:

  mysql 的主键索引叶字节点存的是主键所对应行的整行的全量数据

使用索引覆盖后查询:

select * from user order by id limit 500000, 10;  --305ms  all

select id from user order by id limit 500000, 10;  --99ms   index

重排序查询:

select * from user order by id limit 500000, 10;  --305ms  all

select * from user order by createTime limit 500000, 10;  --999ms  all filesort

 可以发现在50w条数据时, 即使是全表扫描, 0.3s, 索引覆盖0.1s

如果使用非索引字段排序, 则0.9s


总结: 

mysql深度分页问题的根因,不是因为扫描了大量数据,而是大量数据的重新排序太耗时,只要不重排序,就算扫描了大量数据,也不会有性能问题。

来源地址:https://blog.csdn.net/xiaoshitou_2015/article/details/130027651

您可能感兴趣的文档:

--结束END--

本文标题: MySql深度分页慢sql原因

本文链接: https://lsjlt.com/news/404536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySql深度分页慢sql原因
    先说解决方案:索引排序+索引覆盖+延迟关联。 比如查询语句如下: select * from user order by  createTime limit 500000, 10;  延迟关联,即先查主键 id,然后根据 i...
    99+
    2023-09-12
    mysql sql 数据库
  • Mysql开启慢SQL并分析原因
    第一步.开启mysql慢查询 方式一:修改配置文件 Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:\Windows 下。 Linux:Linux 的配...
    99+
    2024-04-02
  • MySQL深度分页
    1. 什么是深度分页 深度分页问题的本质是在 MySQL 数据库中,通过 LIMIT 和 OFFSET 关键字进行分页时,MySQL 需要在每次查询时扫描整张表,直到找到当前页的数据。这种查询方式需要...
    99+
    2023-10-02
    mysql 数据库 sql
  • MySQL 查询速度慢的原因
    目录一、慢在哪?二、是否查询了不需要的数据1. 查询不需要的记录2. 多表关联时返回全部列3. 总是查询出全部列4. 重复查询相同的数据三、是否扫描了额外的记录1. 响应时间2. 扫描的行数和返回的行数3. 扫描的行...
    99+
    2022-06-01
    MySQL 查询 MySQL 查询速度慢
  • vue使用fengMap速度慢的原因分析
    目录使用fengMap速度慢原因vue在使用中的一些小技巧1. 多图表resize事件去中心化2. 全局过滤器注册3. 全局组件注册4. 不同路由的组件复用5. 高阶组件6. 路由根...
    99+
    2024-04-02
  • 云服务器速度慢的原因分析
    云服务器是一种虚拟的存储和计算服务,它可以在不同的设备上运行,但是速度慢是其中很常见的一个问题。以下是一些可能导致云服务器速度变慢的原因: 网络连接问题:有时云服务器上的数据传输速度可能比预期慢。这可能是因为连接不稳定或网络拥堵,导致延...
    99+
    2023-10-26
    速度慢 原因 服务器
  • sql语句执行缓慢的原因分析
    这篇文章主要介绍“sql语句执行缓慢的原因分析”,在日常操作中,相信很多人在sql语句执行缓慢的原因分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sql语句执行缓慢的原因...
    99+
    2024-04-02
  • MySQL慢SQL语句常见原因是什么
    这篇文章主要为大家展示了“MySQL慢SQL语句常见原因是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL慢SQL语句常见原因是什么”这篇文章吧。1...
    99+
    2024-04-02
  • SQL慢的原因有哪些
    本篇内容主要讲解“SQL慢的原因有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL慢的原因有哪些”吧!- 思维导图 -写操作作为后端开发,日常操作数据库...
    99+
    2024-04-02
  • MySQL limit分页大偏移量慢的原因及优化方案
    在 MySQL 中通常我们使用 limit 来完成页面上的分页功能,但是当数据量达到一个很大的值之后,越往后翻页,接口的响应速度就越慢。 本文主要讨论 limit 分页大偏移量慢的原因及优化方案,为了模拟这种情况,下...
    99+
    2022-05-19
    MySQL limit分页 MySQL limit 分页偏移量大
  • mysql查询慢的原因
    这篇文章给大家分享的是有关mysql查询慢的原因的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql慢查询有影响的原因:1、没有索引或没有用到索引;2、IO吞吐量小形成了瓶颈...
    99+
    2024-04-02
  • 云服务器速度慢的原因分析报告
    云服务器是近年来最流行的云计算服务之一,其速度慢的原因可能有很多,以下是一些常见的原因: 配置问题:云服务器需要依赖虚拟化技术,在配置上存在差异。如果虚拟化配置不当,服务器的配置文件可能会变得不一致,从而导致服务器性能变慢。此外,云服务...
    99+
    2023-10-27
    分析报告 速度慢 原因
  • 服务器打开网页速度慢的原因有哪些
    服务器打开网页速度慢的原因有:1、打开网页速度慢的原因有可能是系统本身的问题所导致的或服务器通过远程协议来访问操作所导致的;2、打开网页速度慢的原因有可能是外界因素所导致的;3、打开网页速度慢的原因有可能是没有显卡。具体内容如下:经过很多次...
    99+
    2024-04-02
  • Java锁竞争导致sql慢日志原因分析
    线上在同步用户时,经常出现简单sql的慢日志。根据方法找到代码,发现方法内使用redisson进行锁操作,waiTime和leaseTime都为3秒,数据库操作比较简单,只是一个简单...
    99+
    2022-11-21
    sql在Java代码中执行很慢 Java sql慢日志
  • MySQL调优之SQL查询深度分页问题怎么解决
    这篇文章主要讲解了“MySQL调优之SQL查询深度分页问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL调优之SQL查询深度分页问题怎么解决”吧!一、问题引入例如当前存在一...
    99+
    2023-07-05
  • 深度翻页导出导致慢SQL,mysqlCPU飙升优化方案
    慢SQL原因分析: 深度翻页 多表JOIN 大IN id倒排序 本文针对深度翻页的优化进行探讨 方案1:  将limit   offset, pageSize的方式改成 id > xx limit pageSize. 这样能走Id...
    99+
    2023-09-18
    sql 数据库
  • 云服务器速度慢的原因
    云服务器的速度取决于多方面的因素,例如服务器配置、网络连接、带宽和硬件设备等。如果您的云服务器配置较低或网络连接不稳定,您的云服务器将无法有效地处理大量的请求。 如果您使用的是私有云,那么您可以通过使用 VPS 托管的方式来加快云服务器的...
    99+
    2023-10-26
    速度慢 原因 服务器
  • 网页打开慢是什么原因
    网页打开慢可能有很多原因,以下是一些常见的原因:1. 网络连接问题:网络连接不稳定、带宽限制、高网络延迟等都可能导致网页打开慢。2....
    99+
    2023-08-23
    原因
  • SQL 语句执行很慢的原因
    大多数情况是正常的,只是偶尔会出现很慢的情况 网络问题 数据库在刷新脏页 获取锁失败,我们可以用 show processlist这个命令来查看当前的状态 刷脏页有下面4种场景(后两种不用太关注“性能”问题): ...
    99+
    2019-02-04
    SQL 语句执行很慢的原因
  • SQL查询慢的原因是什么
    这篇文章主要介绍“SQL查询慢的原因是什么”,在日常操作中,相信很多人在SQL查询慢的原因是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询慢的原因是什么”的疑惑...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作