首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

InnoDB 行超长时怎么选择溢出字段

本文内容基于 MySQL 8.0.29 源码。 目录 1. 建表时的限制 2. 索引页长什么样? 3. 怎么判断行超长了? 4. 选择溢出字段的逻辑 5. 溢出页地址 6. 回答文章开头的问题 7....建表时的限制 单从字段数量看,MySQL 的 server 层限制一个表最多只能创建 1024 个字段。...DYNAMIC、COMPRESSED 记录会把溢出字段的全部内容存放到溢出页。 在这个规则之下,再来计算留在索引页中的记录内容长度,看看是不是还会超长?...为啥判断超长的条件是大于 8126 字节呢?先别急,后面会有介绍。 如果不会超长,自然就会建表成功了。 2. 索引页长什么样?...怎么判断行超长了? 通过上一小节,我们知道一个索引页初始化完成之后,会占用 132 字节的空间。

98731
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    超长字符串字段,前缀索引两宗罪

    至于为什么说前缀索引占用的空间和查询成本更小,我们来直接上个例子: 假设表中存在一个邮箱 email 字段,我们在这个字段上面分别创建普通索引和前缀索引: 1)普通索引,包含了每行 email 记录的的整个字符串...前缀索引的区分度不够高怎么办 我当时实习的时候就遇到过这个问题,字段(假设这个字段名是 a)超级超级长,远大于 InnoDB 的限制 767 字节,普通索引肯定是不可能了,前缀索引就算是长度定义成 767...都还是存在区分度不高的情况,但是又存在根据这个字段进行查询的挺频繁的一个需求。...对这个超长字段 a 进行 hash(假设命名为 a_hash) 存入数据库,然后对这个 hash 值建立索引,由于 hash 值同样可能存在冲突,也就是说两个不同的 a 通过 Hash 函数得到的结果可能是相同的...---- 最后放上这道题的背诵版: 面试官:前缀索引了解吗,为什么要建前缀索引 小牛肉:前缀索引就是选取字段的前几个字节建立索引。

    55210

    mysql密码字段类型_MySQL 字段类型

    万一我们需要对一个字段存储一个超出许可范围的数字,MySQL 会根据允许范围最接近它的一端截短后再进行存储。还有一个比较特别的地方是,MySQL 会在不合规定的值插入表前自动修改为 0。...unsigned 和 zerofill UNSIGNED 修饰符规定字段只保存正值,即无符号,而mysql字段默认是有符号的。...使用这个修饰符可以阻止 MySQL 数据库存储负值,如果某列设置为zerofill,那它自动就unsigned。...ENUM 类型字段可以从集合中取得一个值或使用 null 值,除此之外的输入将会使 MySQL 在这个字段中插入一个空字符串。...并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。

    14.5K20

    文章自定义字段和主题设置字段

    在 Typecho 官方的主题开发文档中,很少有关于文章自定义字段和主题设置相关的开发说明。我也是查看了一些开源主题的代码才搞懂自定义字段和主题设置的开发。...这里就简单写一下文章自定义字段和主题设置的定义和调用。...文章自定义字段 文章自定义字段定义后会显示在文章编辑界面的编辑框下方,用户可以使用定义好的选项来设置每篇文章的偏好,在输出文章的时候可以调用用户的设置,实现一些个性化功能。...主题设置字段定义后会显示在主题的外观设置页,用户可以使用定义好的选项来设置主题的外观和功能。...主题设置字段可以在任何一个页面使用$this->options->logoUrl()输出,其中的logoUrl就是字段名。

    1.7K30

    MySQL字段类型_mysql数据库字段类型

    MySQL 支持大量的字段类型,其中常用的也有很多。...定点型字段类型有 DECIMAL 一个,主要用于存储有精度要求的小数。 DECIMAL 从 MySQL 5.1 引入,列的声明语法是 DECIMAL(M,D) 。...char 类型是定长的,MySQL 总是根据定义的字符串长度分配足够的空间。当保存 char 值时,在它们的右边填充空格以达到指定的长度,当检索到 char 值时,尾部的空格被删除掉。...3.日期时间类型 MySQL支持的日期和时间类型有 YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP,几种类型比较如下: 涉及到日期和时间字段类型选择时,根据存储需求选择合适的类型即可...总结: 本篇文章主要介绍了 MySQL 中常用的字段类型,平时用到的字段类型基本都在这里了,以一张思维导图总结如下: 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    19.5K10

    MySQL】DQL-基础查询-语句&演示(查询多个字段 所有字段设置别名去重)

    前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎!...查询关键字: SELECT DQL-语法 ※数据准备工作(必看) 如下所示创建表,并批量插入数据 批量插入数据见DML语句操作(下方有传送门) 【MySQL】DML的表操作详解:添加数据&修改数据.../ 所有字段 SELECT 字段1,字段2,字段3.….FROM 表名; SELECT*FROM 表名;//实际开发中尽量别写*效率低且不直观 效果如下所示 -- 1.查询指定字段 name,workno...workaddress, entrydate from emp; select * from 表名;//实际开发中尽量别写*效率低且不直观 2.查询多个字段设置别名 SELECT 字段1[AS 别名1...'工作地址'from emp; //as可以省略 3.查询多个字段并去重 SELECT DISTINCT 字段列表FROM 表名; 效果如下所示 --4.查询公司员工的上班地址(不要重复) select

    26010
    领券