我在閱讀MySQL 5.6只能索引varchar
(或其他基於文本的類型)的索引the first 767 bytes。我的模式字符集是utf-8
,因此每個字符最多可以存儲3個字節。由於767/3 = 255.66,這表示需要以255個字符索引的文本列的最大長度。經歷似乎證實了這一點,如下經歷:用InnoDB和UTF-8索引的vachar最大長度
create table gaga (
val varchar(255),
index(val)
) engine = InnoDB;
但改變val
的定義varchar(256)
產生一個「錯誤代碼:1071指定的鍵過長,最大密鑰長度爲767個字節」。
在這一天的年齡,255個字符的限制似乎非常低,所以:這是正確的?如果是用MySQL索引更大文本的最佳方式是什麼? (我應該避免它嗎?存儲一個SHA?使用另一種索引?使用另一種數據庫字符編碼?)