MySQL字段中尽量避免NUll
要尽可能地把字段(field)定义为NOT NULL 。即使要用程序无须保存NULL(没有值),也有许多表包含了可空列(NULLlable Column),这仅仅是因为他为默认选项。除非真的要保存NULL,否则就把列定义为NOT NULL。
MYSQL难以优化引用了可空列的查询,它会是索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要在MySQL内部进行特殊处理。当可空列被索引的时候,每条记录都需要一个额外的字节,还能导致MYISAM中固定大小的索引(例如一个整数列上的索引)变成可变大小的索引。
即使要在表中存储“没有值”的字段,还是有可能不适用NULL 的。考虑适用0、特殊值或空字符串来代替它。
把NULL列改为NOT NULL 带来的性能提升很小,所以除非确定它引入了问题,否则就不要把他当成优先的优化措施。能后,如果计划对列进行索引,就要尽量避免把它设置为空。
小知识:null数据它本身不占空间,但是如果null这个字段在一行数据的中间时,它需要维护没行数据的结构统一 ,需要占用一点空间。