由于MYISAM每次都锁定整个表,我正在考虑将MYISAM表转换为InnoDB。但是,INNODB要求唯一和主键在767字节之内。
所以,我收到了这个错误: -
#1071 - Specified key was too long; max key length is 767 bytes
我独特的钥匙有点冗长。那么,将表格转换为INNODB的最佳方式是什么?
以下是描述我的表格的截图
谢谢
答案 0 :(得分:1)
假设屏幕截图中显示的密钥都是您所拥有的,那么此处的密钥是query_id
。作为一个300字符的UTF8列,它最终只使用900个字节。
您需要将索引限制为该列的一部分 - 例如,可能是前100个字符?
DROP INDEX query_id ON tablename
CREATE INDEX query_id ON tablename (query_id, position, prod(100))
答案 1 :(得分:0)
在转换表格之前,请调整其顺序,以便主键列按顺序
> ALTER TABLE tablename ORDER BY 'primary_key_column';
这将预先安排表格,以便可以快速转换,而无需在MySQL中进行大量重新安排。然后,只需更改表引擎:
> ALTER TABLE tablename ENGINE = INNODB;