首页  >  文章  >  数据库  >  为什么 MySQL VARCHAR 索引在 UTF8 中限制为 255 个字符?

为什么 MySQL VARCHAR 索引在 UTF8 中限制为 255 个字符?

Linda Hamilton
Linda Hamilton原创
2024-11-20 15:46:16919浏览

Why Are MySQL VARCHAR Indexes Limited to 255 Characters in UTF8?

MySQL VARCHAR 索引长度

问题:

在 MySQL 中,带有前缀的 varchar 列尽管有足够的索引,但大于 255 个字符的索引不会用于对数据进行排序

答案:

MySQL 在索引计算中假设每个 utf8 字符 3 个字节。由于索引限制为 767 字节,因此最多可转换为 255 个字符。

说明:

  • MySQL 索引大小以字节为单位指定,即使对于非二进制数据类型,如 VARCHAR。
  • 每列的最大前缀索引大小为 767字节。
  • 对于 utf8 列,MySQL 假定每个字符占用 3 个字节。
  • 因此,767 / 3 = 255 个字符是 utf8 列的最大索引长度。

额外注意事项:

  • 由于整个单元格值都被索引,因此 utf8 列的唯一约束限于 255 个字符。
  • 常规索引可以应用于大于 255 个字符的列,但只会索引前 255 个字符。
  • 如果列中的大多数字符都是 ASCII (1 字节字符),索引中可以容纳超过 255 个字符,但 MySQL 的计算并未考虑到这一点。
  • 启用 innodb_large_prefix 选项后,索引限制可以增加到 3072 字节使用动态或压缩行格式的表。

以上是为什么 MySQL VARCHAR 索引在 UTF8 中限制为 255 个字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn