为什么需要前缀索引
问题
我们在对一张表里的某个字段或者多个字段建立索引的时候,是否遇到过这个问题。
Specified key 'uniq_code' was too long; max key length is 767 bytes.
表结构如下:
create table `t_account`(
`id` BIGINT(20) UNSIGNED NOT NULL auto_increment COMMENT '自增ID',
`date` varchar(50) NOT NULL DEFAULT '' COMMENT '日期',
`nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '昵称',
`account` varchar(50) NOT NULL DEFAULT '' COMMENT '账号',
`city` varchar(100) NOT NULL DEFAULT '' COMMENT '城市',
...
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_code` (`nick_name`,`account`,`city`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Test';
复制代码
原因
在MySQL5.6里默认 innodb_large_pre