mysql之explain用法说明

本文详细介绍了MySQL中的EXPLAIN命令的使用方法及各个属性的意义,帮助理解查询执行计划,包括id、select_type、table、type等关键属性,以及如何通过这些信息优化SQL查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EXPLAIN tbl_name –得出一个表的字段结构等。
EXPLAIN [EXTENDED] SELECT select_options–主要是给出相关的一些索引信息。
例:

mysql> explain select * from student;  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
| 1 | SIMPLE | event | ALL | NULL | NULL | NULL | NULL | 13 | |  
+—-+————-+——-+——+—————+——+———+——+——+——-+  
1 row in set (0.00 sec) 

各属性含义

id:select查询的序列号

select_type:select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。

table:输出的行所引用的表。

type:联合查询所使用的类型。type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。

possible_keys:指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引。这时要提高性能,可通过检验WHERE子句,看是否引用某些字段,或者检查字段不是适合索引。

key:显示MySQL实际决定使用的键。如果没有索引被选择,键是NULL。

key_len:显示MySQL决定使用的键长度。如果键是NULL,长度就是NULL。文档提示特别注意这个值可以得出一个多重主键里mysql实际使用了哪一部分。

ref:显示哪个字段或常数与key一起被使用。

rows:这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。

Extra:Only index–这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
where used–就是使用上了where限制。
impossible where–表示未用where,结果为空。
Using filesort或Using temporary–WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序高效,还是先排序再过滤高效。

MySQL中的EXPLAIN命令用于查看SQL语句的执行计划,通过分析执行计划,我们可以了解该SQL语句是否使用了索引、是否进行了全表扫描等。EXPLAIN命令可以模拟优化器执行SQL查询语句的过程,从而帮助我们了解MySQL如何处理用户的SQL语句。 使用EXPLAIN命令时,我们可以得到一些字段的含义,这些字段包括: - id: 表示查询的顺序,如果有多个查询,则id的值会递增。 - select_type: 表示查询的类型,例如Simple表示简单查询,Subquery表示子查询。 - table: 表示查询的表名。 - type: 表示访问表的方式,常见的类型有ALL(全表扫描)和INDEX(使用索引)等。 - possible_keys: 表示可能使用的索引。 - key: 表示最终选择的索引。 - key_len: 表示索引字段的长度。 - ref: 表示与索引比较的参考值。 - rows: 表示查询结果的估计行数。 - Extra: 表示额外的信息,例如Using temporary表示需要使用临时表进行排序操作。 总之,EXPLAIN命令可以帮助我们了解MySQL处理SQL语句的过程,从而优化查询性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【MySQLexplain 用法详解](https://blog.youkuaiyun.com/Sunnyside_/article/details/115916038)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Mysql explain 详细用法](https://blog.youkuaiyun.com/lipei1220/article/details/107927071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值