叫我大侠
人可以失败,但不可以被击败
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一个字符三个字节
<< 上一篇 搭建git开发环境 mysql索引优化方法 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | 蜀ICP备14002619号-4 |