⑥. possible_keys、key列字段
- ①. possible_keys列:这一列显示查询可能使用哪些索引来查找。
- ②. key列:这一列显示mysql实际采用哪个索引来优化对该表的访问。
下面的意思是:可能使用了主键索引、实际也是用的主键索引
mysql> explain select * from actor where id > 1;
⑦. key_len字段
①. 这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的哪些列。 举例来说,film_actor的联合索引idx_film_actor_id由film_id 和actor_id两个int列组成,并且每个int是4字节。通过结果中的key_len=4可推断出查询使用了第一个列:film_id列来执行索引查找
mysql> explain select * from film_actor where film_id = 2;
②. key_len计算规则如下:
字符串,char(n)和varchar(n),5.0.3以后版本中,n均代表字符数,而不是字节数,如果是utf-8,一个数字 或字母占1个字节,一个汉字占3个字节
char(n):如果存汉字长度就是3n字节
varchar(n):如果存汉字则长度是3n + 2字节,加的2字节用来存储字符串长度,因为varchar是变长字符串
数值类型(tinyint:1字节、smallint:2字节、int:4字节、bigint:8字节)
时间类型(date:3字节、timestamp:4字节、datetime:8字节)
如果字段允许为 NULL,需要1字节记录是否为 NULL
⑧. ref、rows字段
- ①. ref字段:这一列显示了在key列记录的索引中,表查找值所用到的列或常量,常见的有:const(常量),字段名(例:film.id)
- ②. rows字段:这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数