MySQL提供了一个EXPLAIN关键字,可以用来分析查询语句执行计划。大家可以将查询语句放在EXPLAIN关键字后面执行,从而得到查询计划。
EXPLAIN SELECT * FROM table_name WHERE column_name = 'value';
执行上述代码后,会看到如下结果:
id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1 SIMPLE table_name NULL ref column_name column_name 100 const 1 100.00 NULL
其中,关注的是type和possible_keys两个字段。type表示MySQL在执行查询时所使用的访问方式,如果值为ALL,说明查询是全表扫描;如果值为ref,说明该表使用了非唯一索引进行扫描;如果值为const,说明查询是用主键匹配所得的唯一一条记录;如果值为range,则说明使用了一个索引区间来扫描符合条件的记录;如果值为system,则说明MySQL只查询一条记录。
possible_keys表示该表中可能被该查询所使用的索引。如果该值为NULL,则表示不存在能够优化该查询的索引。
通过查询计划,大家可以很容易地确定MySQL是否走了索引,哪些索引被使用,以及大家是否需要优化查询语句。