解释Explain得到的结果:
1) type 反应查询语句的性能 我们主需要注意一个最重要的的 type 的信息很明显地体现出是否用到了索引: type 结果值从好到坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL 一般来说,得保证查询至少达到 range 级别,最好能达到 ref 级别,否则就可能出现性能问题。
2) possible_keys: SQL查询时用到的索引。 可以看到,没加索引时,possible_keys 的值为 NULL,加了索引后的值为 address,即用到了索引address(索引默认为(column_list)中的第一个列的名字)
3) key 显示SQL实际决定查询结果使用的键(索引)。如果没有使用索引,值为NULL 可以看到,没加索引时,key 的值为 NULL,加了索引后的值为 address,即决定查询结果用到了索引address
4) rows 显示MySQL认为它执行查询时必须检查的行数 可以看到,没加索引时,rows 的值为17,即数据表student中所有数据,说明没加索引时的SQL查询是全表扫描; 加了索引后,rows 的值为6,数据库表中address以“北京市”开头的一共也就6条,SQL在执行查询操作时,一共也检查了6行,不必进行全表扫描查询,可以很容易得出结论:加索引的SQL查询性能远高于不加索引的情况。