MySQL中explain使用快速查询手册

MySQL中的EXPLAIN是用于优化查询的工具,可以帮助我们理解查询执行的方式,找出可能存在的性能问题,并提供优化建议。下面是使用快速查询手册的详细攻略:

1. 确认查询语句¶

首先需要确认要分析的查询语句,例如以下这个简单的 SELECT 语句:

SELECT * FROM `users` WHERE `name` LIKE 'J%';

2. 使用EXPLAIN进行查询分析¶

使用EXPLAIN关键字,加上要查询的语句,即可得到该查询的执行计划,如下:

EXPLAIN SELECT * FROM `users` WHERE `name` LIKE 'J%';

执行上面的语句,我们可以得到类似如下的输出结果:

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | users | ALL  | NULL          | NULL | NULL    | NULL |   47 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

上面的输出结果包含以下字段:

  • id:查询标识符,用于区分不同的查询。
  • select_type:查询类型,主要有SIMPLE、PRIMARY、UNION、SUBQUERY等类型,表示不同的查询方式。
  • table:查询涉及的表。
  • type:查询类型,主要有ALL、index、range、ref、eq_ref、const等类型,表示不同的查询方式。
  • possible_keys:可能用到的索引。
  • key:实际用到的索引。
  • key_len:用到的索引长度。
  • ref:列与索引之间的匹配。
  • rows:考虑了2个条件后匹配到的行数。
  • Extra:影响查询性能的额外信息,如Using where表示需要进一步过滤。

根据执行计划的结果,我们可以简单解释以下几个关键的字段:

  • type:这是查询执行中最重要的字段之一,它表示MySQL查询的方式,可能的值有ALL、index、range、ref、eq_ref、const等。从上到下,这些值的效率逐渐提高,对于我们去优化查询效率非常有帮助。

  • possible_keys:这个字段表示可能用到的索引,值为逗号分隔的索引名称列表,其查找方式是基于表结构和查询条件计算得出的。如果一个查询涉及到多个表,则将会显示一个连接的列表,每个连接列表对应一个可能的连接类型。

  • key:这个字段表示实际用到的索引。如果一个查询使用了多个表的连接,那么这个字段显示的将是连接顺序的列表。

  • rows:这个字段表示MySQL查询返回的行数,它是基于表统计信息以及查询条件计算而来的一个估计值。

3. 进行优化并测试¶

通过显式调用了 EXPLAIN,我们可以了解 MySQL 调用哪个索引、列我们可以加速、MySQL 采用了哪种连接方式、MySQL 是否启用了内存表等信息,对于查询效率的提升有很大的参考价值。为了优化查询效率,我们通常可以根据EXPLAIN的结果对查询语句或数据库索引进行调整。

举个例子,如果我们发现查询中用到的索引是non-unique非唯一索引,最好调整表结构将其改成unique唯一索引,可以使用如下语句添加唯一索引:

ALTER TABLE `users` ADD UNIQUE INDEX `users_name_idx` (`name`);

再使用 EXPLAIN 关键字看看执行计划有什么变化,是否出现了 new filing 优化提示:

EXPLAIN SELECT * FROM `users` WHERE `name` LIKE 'J%';

如果执行结果进一步优化,大大减小 row,我们就可以判断调整后确实提升了查询效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL中explain使用快速查询手册 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL学习第五天 MySQL数据库基本操作

    MySQL学习第五天 MySQL数据库基本操作 MySQL是一种常见的关系型数据库管理系统,拥有许多基本的数据库操作,包括创建数据库、创建表、插入数据等等。在本篇攻略中,我们将介绍MySQL数据库的基本操作,帮助读者了解和使用MySQL数据库。 连接MySQL数据库 在进行MySQL数据库操作之前,我们需要先连接到MySQL服务器。可以通过以下命令在终端或命…

    database 2023年5月22日
    00
  • MongoDB如何对数组中的元素进行查询详解

    下面是MongoDB如何对数组中的元素进行查询的攻略: 1. 基本语法 MongoDB数组查询需要用到操作符 $elemMatch,其基本语法如下: db.collection.find({array_field: {$elemMatch: {field1: value1, field2: value2}}}) 其中: db.collection 表示要从哪…

    database 2023年5月21日
    00
  • Linux下Mysql定时任务备份数据的实现方法

    下面就为大家介绍如何在Linux下使用定时任务备份MySQL数据库。 简介 MySQL数据库是我们常用的关系型数据库之一,而为了保证数据的完整性及安全性,我们需要进行数据的备份。而通过在Linux系统下使用定时任务进行备份则可以帮助我们高效、准确地完成备份任务。 实现步骤 以下是实现步骤: 1.安装MySQL客户端 我们首先需要安装MySQL客户端,用来连接…

    database 2023年5月22日
    00
  • Entity Framework Core使用控制台程序生成数据库表

    接下来我将详细讲解“Entity Framework Core使用控制台程序生成数据库表”的完整攻略。 前置要求 首先,我们需要确保计算机中安装了以下软件: Visual Studio 2019(或更新版本) .NET Core SDK(3.1 或更新版本) 步骤 新建控制台程序项目 在 Visual Studio 中新建一个控制台程序项目。 安装 Enti…

    database 2023年5月18日
    00
  • mysql json格式数据查询操作

    MySQL 中使用 JSON 格式存储数据能够更好地应对某些应用场景,例如 schema 不稳定、需要存储一些非结构化数据等。本文将详细讲解如何在 MySQL 中进行 JSON 格式数据的查询操作。 环境准备 在进行 JSON 格式数据查询操作前,我们需要先检查 MySQL 的版本,确保其支持 JSON 格式数据操作。MySQL5.7及以上都已经支持 JSO…

    database 2023年5月21日
    00
  • php变量与字符串的增删改查操作示例

    针对“php变量与字符串的增删改查操作示例”的完整攻略,我为您提供如下内容。 1. 变量的定义、修改和获取 1.1 变量的定义 在php中,变量是通过$符号实现的,定义变量非常简单,直接声明即可,例如: $name = "张三"; $age = 20; $height = 170.5; 1.2 变量的修改 变量的修改也非常简单,直接对变量…

    database 2023年5月21日
    00
  • redis数据库的安装配置

       redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,redi…

    Redis 2023年4月13日
    00
  • Linux 每天自动备份mysql数据库的方法

    Linux每天自动备份MySQL数据库的方法可以通过使用crontab和压缩包命令联合完成。下面是具体步骤: 1.使用crontab定时备份数据库 使用crontab可以指定在特定时间或隔一定时间执行某个命令或脚本。可以将备份脚本作为一个可执行文件,然后在crontab里面设置定时备份的时间。 首先,我们需要进入Linux系统,使用以下命令创建一个备份脚本 …

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部