1. 程式人生 > >索引長度

索引長度

長度限制

 預設情況下,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,示例

參考:

  1. https://cloud.tencent.com/developer/article/1005696;
  2. 官網:https://dev.mysql.com/doc/refman/5.7/en/create-index.html;