MySQL的keylen

keylen的计算

explain结果中,keylen表示使用的索引长度,是以字节为单位。根据这个值,就可以判断索引使用情况,特别在使用联合索引的时候,判断有多少的索引字段能被查询用到。

各类型占用的字节空间大小如下(5.6.4以后版本):
DATE: 3
TIME: 3
DATETIME: 8
TIMESTAMP: 4
YEAR: 1
FLOAT: 4
DOUBLE: 8
DDECIMAL: 小数点前后分开存储,且以9位数为1组,用4个字节保存,如果低于9位数,则需要的字节数如下:

0 = 0, 1-2 = 1, 3-4 = 2, 5-6 = 3, 7-9 = 4

索引定义:idx_orgid_workspaceid_pid_pos
其中:
orgid: varchar(64)
workspaceid: bigint(20) unsigned
pid: bigint(20) unsigned
pos: decimal(20, 4)

最后得到keylen为284 = (64 * 4 + 2) + 8 + 8 + (4 + 4 + 2)