IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

为什么字段尽可能用NOT NULL,而不是NULL

Benwin 's blog 2012-10-28 23:26:25 累计浏览 8,509 次
本机暂存

字段尽可能用NOT NULL,而不是NULL,除非特殊情况。这句话在mysql优化的文章被大量的引用,但却不说明原因,下面就讲述一下相关内容

NULL为什么多人用?

1、NULL是创建数据表时默认的,初级或不知情的或怕麻烦的程序员不会注意这点。

2、很多人员都以为not null 需要更多空间,其实这不是重点。

3、重点是很多程序员觉得NULL在开发不用去判断插入数据,写sql语句的时候更方便快捷。

网上很多资料都有写

Mysql官网文档:

“NULL columns require additional space in the rowto record whether their values are NULL. For MyISAM tables, each NULL columntakes one bit extra, rounded up to the nearest byte.”

-----------------------------------------------

Mysql难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要mysql内部进行特殊处理。可空列被索引后,每条记录都需要一个额外的字节,还能导致MYisam 中固定大小的索引变成可变大小的索引

--------这也是《高性能mysql第二版》介绍的

解读:

“可空列需要更多的存储空间”:需要一个额外字节作为判断是否为NULL的标志位

“需要mysql内部进行特殊处理”:http://www.phpben.com/?post=69 这是mysql索引统计,里面有介绍mysql怎么处理NULL。

注意:但把NULL列改为NOT NULL带来的性能提示很小,除非确定它带来了问题,否则不要把它当成优先的优化措施,最重要的是使用的列的类型的适当性.

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,250)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,397)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  4. Mysql监控指南 (累计阅读 21,350)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,522)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,056)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,904)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,692)