MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(四)

⑥. possible_keys、key列字段


  • ①. possible_keys列:这一列显示查询可能使用哪些索引来查找。


  • ②. key列:这一列显示mysql实际采用哪个索引来优化对该表的访问。
    下面的意思是:可能使用了主键索引、实际也是用的主键索引


mysql> explain select * from actor where id > 1;


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(四)


⑦. 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;


MYSQL性能调优02_Explain概述、详解id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列(四)


②. 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估计要读取并检测的行数,注意这个不是结果集里的行数


上一篇:Spread for Windows Forms快速入门(13)---数据排序


下一篇:SAP HANA数据库里对中文字符串排序的实现