索引 - 初识explain分析 ¶
作者:KK
发表日期:2017.3.27
快速解释 ¶
EXPLAIN SELECT * FROM article WHERE user_id = 120317;\G
不会输出查询结果,而是输出SQL语句的执行分析结果,如下:
id: 1
select_type: SIMPLE //查询类型:该语句只是一个简单的查询
table: article //被查询的表
type: ref //解释有点麻烦,在这个阶段不是重点
possible_keys: user_id //可能会用到的索引
key: user_id //最终被使用的索引
key_len: 4 //使用的索引长度,越短越好,4还可以吧,我认为不要随便超过8就好,简单地说它与被索引字段的类型字节长度差不多的,但并非完全对应
ref: const //本阶段也不解释
rows: 9 //简单地说就是被扫描的行数
Extra: //本阶段也不解释
这里是初步讲explain,并不深入讲,我在上面简单地做了一些注释
后面对索引的使用情况进行观察时,经常要用到explain关键字来分析语句来确认情况
笼统地说,程序员和DBA都会用explain对查询语句的性能进行分析解读,所以在这里先初步上手explain,后面再专门深入研究运用它吧
通常用来分析SELECT语句,不能分析INSERT/UPDATE/DELETE语句 ¶
EXPLAIN INSERT INTO article(title, user_id) VALUES('aaa', 33);
EXPLAIN UPDATE article SET user_id = 44 WHERE id = 1;
EXPLAIN DELETE FROM article WHERE id = 1;
都会报语法错误,我们可以这么认为:虽然UPDATE和DELETE语句都有WHERE,但是通过分析SELECT语句就能知道怎样的WHERE条件会有怎样的索引使用情况,这样就能作为参考用在UPDATE和DELETE里面了