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中文网其他相关文章!