mysql explain 详解

100人浏览   2025-01-07 08:17:37

在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,这时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,可以帮助选择更好的索引和写出更优化的查询语句。

EXPLAIN SELECT *

FROM `ri_user`

WHERE

`id` IN ( SELECT id FROM `ri_user` WHERE NAME = 'Rickie20' );

expain出来的信息有12列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra,下面对这些字段出现的可能进行解释:

  • select_type:是否为复杂语句。
  • type:type 为ALL 表示进行的是全表扫描,为index 则表示使用了索引。
  • possible_keys:可能利用的索引的名字,如果没有任何可以利用的索引,则会显示 null。
  • key:它显示了MySQL 实际使用的索引的名字。
  • key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
  • Extra:查询中每一步实现的额外细节信息,优化的时候经常会被使用。

相关推荐