我有一个像这样创建的表:
CREATE TABLE `my_table` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`info` varchar(50) DEFAULT NULL,
`some_more_info` smallint(5) unsigned NOT NULL
PRIMARY KEY (`id`),
KEY `my_index` (`some_more_info`,`info`(24)),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
我的问题是关于名为my_index
的第二个密钥。 “(24)”大小限制是什么意思?列的实际大小为50,但索引仅为24个字符。
这是否意味着MySQL仅索引列info
的前24个字符?
答案 0 :(得分:3)
简而言之,是的,前24个字符被考虑用于构建BTree索引。索引限制被分配给文本类型,例如varchar和text,因为它们不会影响数字精度。
答案 1 :(得分:2)
是。 有关索引长度的完整描述可以在这里找到: http://dev.mysql.com/doc/refman/5.0/en/create-index.html
前缀长度以非二进制字符串类型的字符给出 二进制字符串类型的字节数。也就是说,索引条目包括 CHAR的每个列值的第一个长度字符, VARCHAR , 和TEXT列,以及每个列值的第一个长度字节 BINARY,VARBINARY和BLOB列。
你创建查询还有一些额外的,'s。