mysql 表字段避免null 会带来额外的开销

本文探讨了MySQL数据库设计中关于NULL字段的问题,强调了尽可能使用NOT NULL定义字段的重要性,并解释了这样做的性能优势。文章还提供了替代NULL字段的方法,并讨论了NULL字段对索引的影响。

MySQL字段中尽量避免NUll


要尽可能地把字段(field)定义为NOT NULL 。即使要用程序无须保存NULL(没有值),也有许多表包含了可空列(NULLlable Column),这仅仅是因为他为默认选项。除非真的要保存NULL,否则就把列定义为NOT NULL。


  MYSQL难以优化引用了可空列的查询,它会是索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要在MySQL内部进行特殊处理。当可空列被索引的时候,每条记录都需要一个额外的字节,还能导致MYISAM中固定大小的索引(例如一个整数列上的索引)变成可变大小的索引。


即使要在表中存储“没有值”的字段,还是有可能不适用NULL 的。考虑适用0、特殊值或空字符串来代替它。


把NULL列改为NOT NULL 带来的性能提升很小,所以除非确定它引入了问题,否则就不要把他当成优先的优化措施。能后,如果计划对列进行索引,就要尽量避免把它设置为空。



小知识:null数据它本身不占空间,但是如果null这个字段在一行数据的中间时,它需要维护没行数据的结构统一 ,需要占用一点空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值