mysql索引长度限制


 

myisam表,单列索引,最大长度不能超过 1000 bytes;

innodb表,单列索引,最大长度不能超过 767 bytes;

 

 

utf8 编码时   一个字符占三个字节

varchar  型能建立索引的最大长度分别为

myisam   1000/3   333

innodb     767/3    255

 

 

1、先检查一下数据库被限制了索引的大小
SHOW variables like ‘innodb_large_prefix’;
如果查询的值是off的话,执行下面的命令
SET GLOBAL INNODB_LARGE_PREFIX = ON;
2、执行完了,还需要查看当前innodb_file_format引擎格式类型是不是BARRACUDA
SHOW variables like ‘innodb_file_format’;
如果不是的话则需要修改
SET GLOBAL innodb_file_format = BARRACUDA;

在my.cnf配置文件中同步更改
###########################################
innodb_large_prefix=on 
##########################################

 

utf8mb4 编码时   一个字符占四个字节

varchar  型能建立索引的最大长度分别为

myisam   1000/4   250

innodb     767/4    191

 

CREATE TABLE `table_name`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`apple_id` varchar(255) DEFAULT 'unknown' COMMENT 'apple_id',
`ipad_id` varchar(255) NOT NULL COMMENT 'ipad id',
`version` varchar(255) DEFAULT 'unknown' COMMENT '版本信息',
`start_time` datetime NOT NULL COMMENT '创建时间',
`end_time` datetime NOT NULL COMMENT '结束时间',
PRIMARY KEY (`id`),
KEY `idx_ipad_id` (`ipad_id`)

) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='退出实例表'
AUTO_INCREMENT = 1
###########
# 这里用了InnoDB和utf8mb4

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM