char和varchar类型key_len计算公式:
varchr(N)变长字段且允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)+2(变长字段)
varchr(N)变长字段且不允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+2(变长字段)
char(N)固定字段且允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)+1(NULL)
char(N)固定字段且允许NULL = N * ( character set:utf8=3,gbk=2,latin1=1)
数值数据的key_len计算公式:
TINYINT允许NULL = 1 + 1(NULL)
TINYINT不允许NULL = 1
SMALLINT允许为NULL = 2+1(NULL)
SMALLINT不允许为NULL = 2
MEDIUMINT 允许NULL=3+1(NULL)
MEDIUMINT 不允许NULL=3
INT允许为NULL = 4+1(NULL)
INT不允许为NULL = 4
日期时间型的key_len计算:(针对mysql5.5及之前版本)
DATETIME允许为NULL = 8 + 1(NULL)
DATETIME不允许为NULL = 8
TIMESTAMP允许为NULL = 4 + 1(NULL)
TIMESTAMP不允许为NULL = 4
TIME 允许NULL=3+1(NULL)
TIME 不允许NULL=3
DATE 允许NULL=3+1(NULL)
DATE 不允许NULL=3
YEAR 允许NULL=1+1(NULL)
YEAR不允许NULL=1