根据MySQL website,key_len
列表示MySQL决定使用的密钥的长度。如果关键列显示NULL
,则长度为NULL
。请注意,key_len的值使您可以确定MySQL实际使用的多部分密钥的多少部分。
使用我的previous question中的示例,我有一个EXPLAIN SELECT语句,使用Index
key_len: 6
来显示MySQL。下面显示了所使用的索引和列的组成。
`Type` char(1) NOT NULL,
`tn` char(1) NOT NULL DEFAULT 'l',
`act` tinyint(1) unsigned NOT NULL DEFAULT '0',
`flA` mediumint(6) unsigned NOT NULL DEFAULT '0',
KEY `Index` (`Type`, `tn`, `act`, `flA`)
那么key_len
的值如何让我确定我的查询使用了多部分键的前三部分?
答案 0 :(得分:20)
key_len指定MySQL从密钥使用的字节数 索引总是使用left_to_right。即只使用最左边的部分。
字段的长度如下:
1 byte `Type` char(1) NOT NULL,
1 byte tn char(1) NOT NULL DEFAULT 'l',
1 byte act tinyint(1) unsigned NOT NULL DEFAULT '0',
3 bytes flA mediumint(6) unsigned NOT NULL DEFAULT '0',
1+1+1+3 = 6 bytes KEY `Index` (`Type`, `tn`, `act`, `flA`)
key usage always starts here ---^^^^^
如果key_len = 3,那么它正在使用type+tn+act
请注意,在此配置中,Key_len = 4是不可能的。