key_len
- 表示索引使用的字节数,可通过计算查询中使用的索引长度。不损失精度准确性情况下,越短越好
- 显示的是值为索引字段的最大可能长度,而不是实际长度,即根据表定义计算得出的
key_len字符型
类型|大小|用法
CHAR|0-255|定长字符串
WARCHAR|0-65535|变长字符串
-
CHAR UTF-8
一个字符大小为3
-
CHAR UTF-8
如果允许为null
长度+1
-
VARCHAR UTF-8
在CHAR
的基础上+2
表示变长的大小
key_len数值型
类型|大小|有符号范围
TINYINT|1|-128,127
SMALLINT|2|-3276,32767
MEDIUMINT|3|-8388608,8388707
INT/INTEGER|4|-2147483648,2147483647
BIGINT|8|
FLOAT|4|
DOUBLE|8|
key_len日期
类型|大小
DATE|3
TIME|3
YEAR|1
DATETIME|8
TIMESTAMP|4
-
datetime
在5.6
中长度是5
个字节 -
datetime
在5.5
中长度是8
个字节
key_len总结
- 变长需要额外
2
个字节记录长度 -
null
需要1
个字节的额外空间,索引最好不要null
- 复合索引最左前缀的特性,key_len可以看复合索引是否全部使用
ref
- 显示索引的那一列被使用了,如果有可能,是一个常数。那些列或者常量被用于查找索引列上的值。
-
const
表示使用了常量 -
db.table.id
那个数据库的那个表的那个字段使用了索引
rows
- 根据表信息统计和索引选用,估算找到信息大致所需读取的行
Extra
- 包含护士和在其他列中显示但十分重要的信息
-
Using filesort
使用文件排序,即没有用到索引,需要使用外部索引,进利用表内索引无法按顺序读取。此时需要在语句中加上索引的where
、group by
... -
Using temporary
使用了临时表用于加快查询,在group by
最左边加入where in
的字段,可以消除临时表。子查询优化成连表... -
Using index
覆盖索引,查询的所有字段都是索引,就可以直接从索引读取。 -
Using where
使用了where
查询
type
效率顺序,最好是ref
以上
system
const
eq_ref
-
ref
使用了条件索引 range
-
index
扫描了整个索引文件(全表扫描的一种) ALL
网友评论