索引長度
阿新 • • 發佈:2018-12-17
長度限制
預設情況下,InnoDB 引擎單一欄位索引的長度最大為 767 位元組,啟用伺服器選項 innodb_large_prefix 後可以達到 3072 位元組;對於 UTF-8 字符集,每個字元使用 3 位元組來儲存,VARCHAR 或者 TEXT 型別的欄位的索引不能超過767/3= 255 個字元;對於 GBK 字符集,每個字元使用2位元組來儲存,VARCHAR 或者 TEXT 型別的欄位的索引不能超過767/2= 384個字元;
Prefix support and lengths of prefixes (where supported) are storage engine dependent. For example, a prefix can be up to 767 bytes long for InnoDB tables or 3072 bytes if the innodb_large_prefix option is enabled. For MyISAM tables, the prefix length limit is 1000 bytes.
索引長度超出限制時的錯誤
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
解決方案:字首索引
含義:使用列的部分作為索引,即col_name(length);
- 優點:節省索引空間,提升索引效率;
- 缺點:無法利用字首索進行ORDER BY和GROUP BY,示例;
參考: