mysql索引最大长度
mysql索引最大长度根据mysql版本不同所不同,我使用的mysql版本5.1.6索引长度限制为:1000字节。
怎么得出这个结论的,做个测试就知道了。
普通latin字符:
mysql> drop table if exists test; create table test(test varchar(1000) primary key)charset=latin5; Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> drop table if exists test; create table test(test varchar(1001) primary key)charset=latin5; Query OK, 0 rows affected (0.00 sec) ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
使用GBK字符:
mysql> drop table if exists test; create table test(test varchar(500) primary key)charset=GBK; Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> drop table if exists test; create table test(test varchar(501) primary key)charset=GBK; Query OK, 0 rows affected (0.00 sec) ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
使用UTF8字符:
mysql> drop table if exists test; create table test(test varchar(333) primary key)charset=utf8; Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> drop table if exists test; create table test(test varchar(334) primary key)charset=utf8; Query OK, 0 rows affected (0.00 sec) ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
看出来了吧,最大限制1000bytes。
gbk,utf8,latin不一样,因为他们存储字节不一样。如下
latin 1:1 一个字符一个字节 gbk 1:2 一个字符两个字节 utf8 1:3一个字符三个字节