通常在优化SQL查询的时候,我们都会使用explain分析SQL执行计划,通常来说当用到组合索引的时候我们如何判断索引完全用上呢?当然高手看看表结构及SQL语句就知道到底用到了几个字段,对于不熟悉的同学呢?我们还是可以看看key_len的长度,当然这个计算还是有点复杂的,下面我们来谈谈explai...
【mysql】 【innodb】 【explain】 【key_len】 点击查看原文>
表示 进入内容 1 去 2
Sep
29
2016
Oct
26
2015
导读
EXPLAIN中的key_len一列表示什么意思,该如何解读?
EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引长度有多少字节,通常我们可借此判断联合索引有多少列被选择了。
在这里 key_len 大小的计算规则是:
-
一般地,key_len 等于索引列类型字节长度,例如int类型为4-bytes,bigint为8-bytes;
-
如果是字符串类型,还需要同时考虑字符集因素,例如:CHAR(30) UTF8则key_len至少是90-bytes;
-
若该列类型定义时允许NULL,其key_len还需要再加 1-bytes;
-
若该列类型为变长类型,例如 VARCHAR(TEXT\BLOB不允许整列创建索引,如果创建部分索引,也被视为动态列类型),其key_len还需要再加 …
表示 进入内容 1 去 2