在Mysql中很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。但我们常在一些Mysql性能优化的书或者一些博客中看到观点:在数据列中,尽量不要用NULL 值,使用0,-1或者其他特殊标识替换NULL值,除非真的需要存储NULL值,那到底是为什么?含NULL复合索引无效.可为NULL的列会使用更多的存储空间,在Mysql中也需要特殊处理。从特定类型的值域中选择一个不可能的值,例如用-1代表一个未知数,可能导致代码复杂的多,并容易引入BUG,还可能让事情变得一团糟。当然也有例外,InnoDB使用单独的位来存储NULL值,所以对于稀疏数据由很好的空间效率,这一点不适用于MyISAM。所以任何的设计和考虑请注意关注实际需求
暂无评论