2014-01-20 68 views
1

我有一個表像這樣創建:MySQL索引的大小限制是什麼意思?

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個字符?

回答

2

總之,是的,前24個字符是考慮到建立BTree指數。索引限制分配給文本類型,如varchar和text,因爲它們不影響數字精度。

+0

請參閱 [MySQL文檔](http://dev.mysql.com/doc/refman/4.1/en/create-index.html)並查看關於「可以創建僅使用列值的領先部分......「 –

1

是的。 關於索引長度的整個描述可以在這裏找到: http://dev.mysql.com/doc/refman/5.0/en/create-index.html

前綴長度被用於非二進制串類型的字符和 給出二進制字符串類型字節。即,索引條目包括 的第一長度字符CHAR每個列的值的VARCHAR, 和TEXT列,以及用於 BINARY,VARBINARY每個列的值的第一長度字節,BLOB列。

此外,你創建查詢有/有一些額外的,。