MySQL 的 explain 命令基本用法

本文介绍了MySQL的Explain命令,用于分析SQL查询语句的执行计划,包括id、select_type、table、type等关键参数的解释。通过理解这些参数,可以识别并优化using filesort和using temporary等性能问题。
摘要由CSDN通过智能技术生成


为了提前了解 SQL 的性能,MySQL 提供了 explain 执行计划功能。它对分析和优化 SQL 语句十分有用,通过它可以看清执行过程的细节、优化器的选择,分析 SQL 的性能瓶颈,找到问题所在。

当需要对某条 SQL 查询语句进行分析和优化时,我们经常会使用 explain 命令desc 命令进行操作,分析 SQL 语句时,explain 和 desc 的作用是一样的。

使用 explain 命令可以分析出 SQL 查询语句中索引的使用情况、扫描的行数、扫描的类型等等,以便帮助我们对索引和 SQL 语句进行优化。

使用方法

使用方法:在 SQL 查询语句前面,加上 explain 或 desc 即可

为了便于演示,先创建测试数据:

CREATE TABLE `t` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户名称',
  `city` char(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '所在城市',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户的状态: 1启用, 2禁用',
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  KEY `name_city` (`name`,`city`) USING BTREE,
  KEY `status` (`status`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='测试表';

INSERT t(`name`, `city`, `status`) VALUES 
('jack', 'bj', '1'),
('rose', 'sh', '2'),
('jim', 'sz', '1'),
('robot', 'gz', '1'),
('niko', 'sz', '1'),
('alice', 'sh', '1');

然后,执行下面的语句:

explain select id from t where id=1;

分析结果如下:

+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra       |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+-----
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值