将 MySQL 列值设置为 NULL 而不是 0 或 '' 对磁盘空间的影响

2024-03-21

我试图了解处理大部分为空的列的最佳方法磁盘空间 and 指数表现。将所有空位放入 NULL 与 ''(对于 varchar/text)与 0(对于 int)之间有区别吗?

Thanks.


不,使用 NULL 不会比空占用更少的空间VARCHAR or INT场地。事实上它可能会占用more空间。原因如下:

A VARCHAR存储为大小 + 值。用于大小的字节数取决于最大存储空间VARCHAR. VARCHAR(255)需要一个字节,VARCHAR(65536)需要两个字节等等。

So that VARCHAR(255)即使您存储空字符串,列也会占用一个字节。下表每行至少占用一个字节(加上一些其他可能的开销,具体取决于存储引擎)。

CREATE TABLE sample (
  a VARCHAR(255) NOT NULL
);

To save NULL值,MySQL 对每一行使用一个位掩码。每个字节最多可以存储 8 个可为空的列。所以如果你有一个这样的表:

CREATE TABLE sample (
  a VARCHAR(255) NULL
);

每行至少需要两个字节。储存NULL只需设置该位,无论您使用与否,它都已被保留。该字节为VARCHAR即使列设置为,每行仍使用 的大小NULL.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 MySQL 列值设置为 NULL 而不是 0 或 '' 对磁盘空间的影响 的相关文章

随机推荐

  • 为什么我的 Spring @Autowired 字段为空?

    注意 这旨在成为常见问题的规范答案 我有一个春天 Service class MileageFeeCalculator 有一个 Autowired field rateService 但该字段是null当我尝试使用它时 日志显示 两个Mil
  • UIView drawRect 与 initWithFrame

    我有一个 UIView 其中添加了几个按钮作为子视图 目前我的按钮位于drawRect 中 我听说这是一个坏主意 因为drawRect可以被调用多次 我尝试将这些 UIButtons 移至 initWithFrame 但它们只是没有被绘制
  • Swift 2.2:不再导入 GCC_PREPROCESSOR_DEFINITIONS 常量

    The 本答案中描述的在 xcconfig 文件中分离 API 密钥的技术 https stackoverflow com a 32540064 569448不适用于 Swift 2 2由于错误 SR 909 https bugs swif
  • 如何从 C 扩展返回 Python 枚举?

    我正在为 Python 编写一个封装 C 库的 C 扩展 C 库有一些枚举类型 我已经编写了相应的IntEnums 用于这些 例如 from enum import IntEnum enum consts is a C extension
  • Breezejs EntityManager MetadataStore 和 fetchEntityByKey

    我有一个 SPA 应用程序 durandaljs 并且有一条特定的路线 可以在其中映射我想要获取的实体的 id 模板是 todoDetail id 例如 todoDetail 232 或 todoDetail 19 在 viewmodel
  • Android 中具有负半径的形状角

    我想创建一个带有角的复合视图 如下所示 这在 Android 中怎么可能呢 如果有人遇到同样的问题 最好的方法是使用 9 png 绘图 在 xml 中这是不可能的
  • default_batch_fetch_size推荐值

    我正在学习一些休眠教程 并陷入了default batch fetch size 阅读专家评论 Hibernate 可以用于性能敏感的应用程序吗 https stackoverflow com questions 651664 can hi
  • 修改 bootstrap Popover Html 内容不持久

    我有以下弹出窗口设置 弹出图标启动器
  • CURL 命令行 URL 参数

    我正在尝试发送DELETE使用 CURL 进行带有 url 参数的请求 我在做 curl H application x www form urlencoded X DELETE http localhost 5000 locations
  • 强制在 IE 中重新应用样式表

    考虑这个 HTML ul li first li li second li li third li ul 这个CSS li first child background yellow 还有这个 JavaScript jQuery ul ap
  • 创建多态透镜

    我能够为最后一个字段创建一个镜头 c 在我的数据类型中执行以下操作 LANGUAGE DuplicateRecordFields data X1 a c X1 a a b Int c c data X2 a b c X2 a a b b c
  • 如何在 PyQt 中自定义 QCompleter 弹出窗口?

    我有一些对于 QLineEdit 的 QCompleter 的定制感兴趣的东西 我想让它的行为类似于 Chrome 中的地址 搜索栏 如何限制显示的行数 例如 即使有 15 个匹配项 我也只希望 QCompleter 显示 5 个 如何调整
  • SQLite - 将带有换行符的字符串从csv文件插入数据库

    All 我正在尝试将长文本条目注入 SQLite 数据库的 TEXT 字段中 该文本中有新行 即它跨越多个段落 如果我手动执行 INSERT 我可以显示新行 INSERT INTO LOGENTRY VALUES 5 40 PLACE li
  • 如何截断 .net 中的日期?

    除了 DateTime ctor new DateTime year month day 之外 还有其他方法来截断日期吗 日期时间 日期 http msdn microsoft com en us library system dateti
  • 如何将更多参数传递给令牌端点 Web api 2

    我需要将更多参数传递给令牌端点 如下所示 grant type 密码 用户名 Alice 密码 密码123 peop1 值 Prop2 值 获取令牌 我如何传递这些以及我可以在服务器上哪里获取它们 OAuth2 资源所有者密码流定义了这些参
  • 查找给定文本中的子字符串.. C 程序

    char substring char text int position int length int i j 0 char temp for i position 1 i
  • 无法以json格式将数据从php添加到jqGrid

    你好 StackOverFlow 国家 我正在尝试向 jqGrid 添加信息 该信息是从 MySQL 数据库检索的 我有两个文件 gt index html 和 data php 都在同一目录中 index html 来源 gt
  • SQL |返回最小值 |动态多行

    我需要创建一个查询 仅返回特定列中具有最小值的行 我有这个结果 示例 Name Description Order Name1 A 1 Name1 B 2 Name1 C 3 Name2 A 1 Name2 B 2 Name2 C 3 我想
  • 按字典顺序比较字符串

    我认为如果我在 C 中使用 gt 和 if aa gt bz cout lt lt Yes 这不会打印任何内容 这就是我需要的 但是如果我输入 if aa gt bzaa cout lt lt Yes 这将打印 是 为什么会发生这种情况 或
  • 将 MySQL 列值设置为 NULL 而不是 0 或 '' 对磁盘空间的影响

    我试图了解处理大部分为空的列的最佳方法磁盘空间 and 指数表现 将所有空位放入 NULL 与 对于 varchar text 与 0 对于 int 之间有区别吗 Thanks 不 使用 NULL 不会比空占用更少的空间VARCHAR or