mysql 字段设计,尽量设置不允许为null

mysql 字段设计,尽量设置不允许为null

一、总结

一句话总结:

如果字段加了索引,或者以后有可能会加索引,对于 MySQL的字段来说,应该是不能null的 ,不仅仅是【效率和性能】问题,而且还有着【查询的巨坑】的。

二、mysql 字段设计,尽量设置不允许为null

其实 从 个人的角度来看,, 都无所谓,,为了麻烦,有时候 都是 默认可以为 null 的 。 但是看了一些 文章,说 如果 字段 加了索引,或者 以后 有可能会 加索引,, 对于 MySQL 的 字段来说, 应该是 不能 null 的 ,不仅仅是 效率 和性能问题,,,而且 还有着 查询的 巨坑的。

注意:MySQL字段尽量避免NULL,应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,而且对表索引时不会存储NULL值的,所以如果索引的字段可以为NULL,索引的效率会下降很多。因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。 本文永久地址:http://blog.it985.com/12398.html

参考地址: http://blog.csdn.net/qingfenglu/article/details/48022837

允许为null 的 列,查询有潜在 大坑。 单列索引不存 null 值,复合索引 不存全为 null 的值,如果 列 允许为null ,可能会得到 "不符合预期" 的结果集:

例子: 
 select * from  user where name!='xxxa'
如果name 允许 为 null ,  加了索引, 索引不存储 为 null 的值 ,结果 集中不会包含 这些记录的

但是呢,,,如果字段设置了不为 null,而且有默认值。。。 那么在开发端呢,就会比较麻烦了。。。 特别是 一些 DAO的框架或者 jdbc的工具类,,会把 一些 table entity 实体,,没有值得属性,调用 save 方法的时候, 将该值 设置为 null ,来进行插入,如果字段设置了不能为null ,,,那么就会插不进去了。。。 当然如果我们可以 改改 save的方法,,判断如果没有值得话,,就忽略掉,,,那当然是好事了。。。 可是有时候 往往 没有改的权利,或者不好动。。怕出问题,特别是一些 大的老的项目。。。

参考:https://blog.csdn.net/chuncui2576/article/details/100759896
 
 
我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
博主25岁,前端后端算法大数据人工智能都有兴趣。
大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
聊技术,交朋友,修心境,qq404006308,微信fan404006308
26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
人工智能群:939687837

作者相关推荐

原文地址:https://www.cnblogs.com/Renyi-Fan/p/14386627.html