我的编程空间,编程开发者的网络收藏夹
学习永远不晚

为什么MySQL查询速度会慢

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

为什么MySQL查询速度会慢

一、先了解一下MySQL查询的执行过程

MySQL在查询时,它是由很多子任务组成的,每个子任务都会消耗一定的时间,如果要想优化查询,实际上要优化其子任务,可以消除一些子任务、减少子任务的执行次数、让子任务执行的更快。

MySQL查询的执行过程:从客户端到服务器、然后在服务器进行解析、生成执行计划、执行、返回结果给客户端。

执行是最重要的阶段,包括调用存储引擎检索数据、调用后的数据处理、排序、分组等;

查询需要在不同的地方花费时间,包括网络、CPU计算、生成统计信息、生成执行计划、锁等待等,尤其是向底层存储引擎检索数据的调用操作,这些调用需要在内存操作、CPU操作和内存不足时导致的IO操作上花费时间。根据存储引擎不同,可能还会产生大量的上下文切换以及系统调用。

不必要的额外操作、不必要的重复操作、某些操作执行的太慢都是查询慢的原因,优化查询的目的就是减少和消除这些操作所花费的时间。

二、是否查询了不需要的数据

有些查询会查询很多不需要的数据,查询之后,程序中并未使用,这样不但会给MySQL服务器带来额外的负担,还会增加网络开销,也会消耗应用服务器的CPU和内存资源,简而言之,吃多少拿多少。

千万不要有“把数据都查出来,用Java代码过滤”的想法。

禁止使用select *进行查询。

三、衡量查询开销的几个重要指标

1、响应时间

响应时间可以分为服务时间和排序时间。

  • 服务时间指数据库处理这个查询真正花费的时间;
  • 排队时间指服务器因为等待某些资源而没有真正执行查询的时间,比如等待IO操作、等待行锁。

2、扫描的行数和返回的行数

较短的行的访问速度更快,内存中的行比磁盘中的行的访问速度要快得多。

理想情况下扫描的行数和返回的行数是相同的。但这种情况并不多见,比如关联查询的时候,服务器必须扫描更多的行才能得到结果,因此,越多的表关联,性能越低。

3、扫描的行数和访问类型

MySQL可以通过多种方式查询并返回结果集,速度从慢到快,扫描的行数由多到少,依次为全表扫描、索引扫描、范围扫描、唯一索引扫描、常数引用。

最常用的优化方式是为查询增加一个合适的索引,索引可以让MySQL以最高效、扫描行数最少的方式找到需要的记录。

为什么MySQL查询速度会慢

4、一般可以通过explain的Extra列查看查询的优劣

一般MySQL能够使用以下三种方式应用where条件,从好到坏依次为:

  • 在索引中使用where条件过滤不匹配的记录,这是在存储引擎层完成的;
  • 使用索引覆盖扫描,也就是Extra中出现Using index,直接从索引中过滤不需要的记录并返回命中的结果,这是在MySQL服务器层完成的,无须再回表查询记录;
  • Extra中出现Using where,这是在MySQL服务器层完成的,MySQL需要先从数据表读取记录,然后过滤。

Extra中出现Using where时,可以通过如下方式优化:

  • 使用索引覆盖扫描,把所有需要的列都放到索引中,这样就不用回表查询了;
  • 改变表结构,比如使用汇总表;
  • 重写sql,让MySQL优化器能够以更优化的方式执行这个sql;

到此这篇关于为什么MySQL查询速度会慢的文章就介绍到这了,更多相关MySQL查询速度慢内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

为什么MySQL查询速度会慢

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

为什么MySQL查询速度会慢

目录一、先了解一下mysql查询的执行过程二、是否查询了不需要的数据三、衡量查询开销的几个重要指标1、响应时间2、扫描的行数和返回的行数3、扫描的行数和访问类型4、一般可以通过explain的Extra列查看查询的优劣一、先了解一下MySQ
2022-12-01

MySQL 查询速度慢的原因

目录一、慢在哪?二、是否查询了不需要的数据1. 查询不需要的记录2. 多表关联时返回全部列3. 总是查询出全部列4. 重复查询相同的数据三、是否扫描了额外的记录1. 响应时间2. 扫描的行数和返回的行数3. 扫描的行数和访问类型谈到MySQ
2022-06-01

mysql查询速度慢如何解决

今天小编给大家分享一下mysql查询速度慢如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-04-20

vps主机访问速度为什么会变慢

VPS主机访问速度变慢可能有多种原因,以下是一些常见的原因:网络带宽不足:当VPS主机所在的网络带宽不足时,可能导致访问速度变慢。CPU和内存资源不足:当VPS主机的CPU和内存资源不足时,可能会导致处理访问请求的速度变慢。硬盘I/O性能不
vps主机访问速度为什么会变慢
2024-04-19

mysql索引为什么能提高查询速度

mysql 索引提升查询速度是因为它使用索引结构快速查找和检索数据,消除了逐行扫描的需要。索引就像一本字典,它将数据值关联到记录指针,允许 mysql 直接跳转到相关记录。使用索引可以减少数据扫描量、加速查找过程,并优化排序和分组查询。My
mysql索引为什么能提高查询速度
2024-05-21

编程热搜

目录