mysql explain 详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的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:查询中每一步实现的额外细节信息,优化的时候经常会被使用。