MySQL中explain使用快速查询手册

yizhihongxing

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日

相关文章

  • CouchDB和Redis的区别

    CouchDB和Redis都是流行的NoSQL数据库,它们各自具有不同的特点和用途。 CouchDB 什么是CouchDB? Apache CouchDB是一个使用JSON格式存储数据的开源数据库,具有分布式、无模式和离线支持的特点。Couch意为“Cluster Of Unreliable Commodity Hardware”(不可靠的通用硬件群集),可…

    database 2023年3月27日
    00
  • Node.js简单入门前传

    Node.js是一个基于跨平台的开放源代码运行环境,可以利用JavaScript编写服务器端的应用程序。它拥有事件驱动、非阻塞I/O等特性,可以实现高效的网络应用。本文将为大家讲解Node.js的简单入门攻略,帮助初学者快速掌握它的核心概念与用法。 安装Node.js 首先需要在计算机上安装Node.js的运行环境。Node.js官方网站提供了多种下载方式,…

    database 2023年5月22日
    00
  • SQL Server数据库连接查询和子查询实战案例

    SQL Server数据库连接查询和子查询实战案例 SQL Server中,连接查询和子查询都是常用的查询方式,可以在多个表之间进行复杂的数据查询和筛选。本文将介绍连接查询和子查询的使用方法,并且通过两个实例来演示其在实际场景中的应用。 连接查询 在多个表之间进行查询时,连接查询是一种非常常见的方式,其通过将多个表中的数据进行匹配,然后将符合条件的数据输出到…

    database 2023年5月21日
    00
  • 如何在Python中使用SQLAlchemy操作Microsoft SQL Server数据库?

    以下是如何在Python中使用SQLAlchemy操作Microsoft SQL Server数据库的完整使用攻略,包括安装SQLAlchemy库、连接Microsoft SQL Server数据库、创建表、插入数据查询数据、更新数据、删除数据等步骤。同时,提供了两个示例以便更好理解如何在Python中使用SQLAlchemy操作Microsoft Serv…

    python 2023年5月12日
    00
  • shell脚本监控mysql主从状态

    Shell脚本监控MySQL主从状态 本文将介绍如何通过编写Shell脚本来监控MySQL的主从复制状态。在MySQL主从复制环境中,主服务器上的数据会被复制到从服务器上。如果主从复制状态异常,就需要及时进行处理,以避免数据的丢失。通过编写Shell脚本,可以自动化地检测主从复制状态,以及采取必要的措施来调整主从复制状态。 1. 前置条件 在开始编写Shel…

    database 2023年5月22日
    00
  • SQL Server创建数据库图文教程

    下面是“SQL Server创建数据库图文教程”的完整攻略。 1. 确认权限 在创建数据库之前,首先需要确认当前用户是否拥有创建数据库的权限。可以通过以下命令查询当前用户的权限: SELECT * FROM sys.fn_my_permissions(NULL, ‘SERVER’) WHERE permission_name = ‘CREATE ANY DA…

    database 2023年5月21日
    00
  • SQL Server时间戳功能与用法详解

    SQL Server时间戳功能与用法详解 在 SQL Server 中,时间戳是一种数据类型,用于记录数据表中行的改变情况。本文将详细介绍时间戳的概念、语法和用法。 什么是时间戳? 时间戳(timestamp)是一种用来追踪数据表中行的变化的方法。它可以自动维护每行数据的版本号,并在行发生变化时自动更新版本号。时间戳是一种二进制数据类型,并具有以下特性: 每…

    database 2023年5月22日
    00
  • PHP管理依赖(dependency)关系工具 Composer 安装与使用

    PHP管理依赖(dependency)关系工具 Composer 安装与使用 什么是 Composer Composer 是 PHP 依赖管理工具,它能够自动下载并安装 PHP 第三方库和类文件,同时也能管理这些依赖库之间的关系。使用 Composer,我们可以轻松的管理项目中的依赖关系,将精力更多地放到项目本身的实现上,提高开发效率。 Composer 安…

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