MySQL 中如何计算一个索引的长度
2023-09-27 14:23:02 时间
首先,我们要知道 MySQL Innodb 引擎对于索引的长度是有限制的,最大为 767 字节。
你采用不同的字符编码方式,对应的字节数是不一样的,比如我们最常用的 utf8mb4 字符集是 4 字节字符集,则 767 字节 / 4 字节每字符 = 191字符(默认索引最大长度),所以在 varchar(255) 或 char(255) 类型字段上创建索引会失败,报错会提示最大索引长度为 767 字节。
其他的一些编码方式对应关系分别是:latin1 编码的,一个字符占用一个字节,gbk 编码的,一个字符占用两个字节,utf8 编码的,一个字符占用三个字节。
总的来说,索引长度计算规则为:
所有的索引字段,如果没有设置 Not Null,则需要加一个字节(这也是我们为什么建议建表时不要有 Null 字段的原因之一)。
对于定长字段,int 类型占四个字节、date 占三个字节、char(n) 占 N 个字符。
对于变成字段 varchar(n),则是 N 个字符 + 两个字节。
不同的字符集,一个字符占用的字节数不同。latin1编码的,一个字符占用一个字节,gbk编码的,一个字符占用两个字节,utf8编码的,一个字符占用三个字节。
索引长度 char()、varchar() 索引长度的计算公式:
Character Set:utf8mb4
相关文章
- mysql索引总结(4)-MySQL索引失效的几种情况
- MYSQL中的普通索引,主健,唯一,全文索引区别
- Mysql 索引设计的原则, 脏读,幻读
- 使用 sqoop 将mysql数据导入到hive表(import)
- MySQL优化索引
- MySQL分布值很少的字段要不要加索引
- mysql索引有哪些类型?
- mysql 索引
- MySQL索引背后的数据结构及算法原理
- mysql增加唯一索引
- 《PHP和MySQL Web开发从新手到高手(第5版)》一1.7 万事俱备,摩拳擦掌
- 基于Java(SpringBoot)+Vue+MySQL 实现(Web)的网络课程平台【100010329】
- MySQL中间件之ProxySQL(4):多层配置系统
- Mysql联合,连接查询
- Mysql常用函数,难点,注意
- 用sqoop将mysql的数据导入到hive表中
- 如何仅用一个命令来提高MySQL安全系数?
- Mysql_mysql force Index 强制索引
- MySQL索引底层数据结构与算法
- MySQL的索引和事务
- (5.12)mysql高可用系列——复制中的在线切换GTID模式/增加节点/删除节点
- (1.11)SQL优化——mysql提示(hint)
- MySQL初步笔记,有待整理
- mysql组合索引与字段顺序
- Mysql的列索引和多列索引(联合索引)
- 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法
- MySQL的备份与还原,非常规备份,全量备份,增量备份
- 【ChatGPT】python fastapi mysql 实现 增删改查的代码
- mysql Column count doesn't match value count at row 1
- mysql---备份数据库
- MySQL-查询数据库(一)