赞
踩
对于参与索引的字段,增加字段长度时可能会出现错误“Specified key was too long; max key length is 767 bytes”。
因为数据库建立索引时允许的最大长度是767字节。如果开启innodb_large_prefix,则长度扩展至3072字节。
对于UTF-8而言,一个字符占3个字节,varchar(300)长度就是300*3=900字节>767字
启用innodb_large_prefix,将约束项扩展至3072byte。
- my.cnf配置:
-
- default-storage-engine=INNODB
-
- innodb_large_prefix=on
为索引字段指定长度。先删除原索引再重新创建 ,指定字段长度。
对于较长的字段,没必要整个都参与索引计算。只要指定字段的前几个字符,能较为有效地区分不同记录即可。这样既能达到索引效果,又能减小索引文件。
- ALTER TABLE `order`
- DROP KEY `idx_aaa`, -- 删除原索引
- DROP KEY `idx_bbb`,
- DROP KEY `idx_mix`,
-
- MODIFY `aaa` varchar(500) DEFAULT NULL COMMENT 'aaa', -- 修改字段长度
- MODIFY `bbb` varchar(500) DEFAULT NULL COMMENT 'bbb',
-
- ADD KEY `idx_aaa`(`aaa`(11)) USING BTREE, -- 重新添加索引,指定字段参与索引的长度
- ADD KEY `idx_bbb`(`bbb`(4)) USING BTREE,
- ADD KEY `idx_mix`(`ccc`(8),`ddd`(6)) USING BTREE;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。