加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 创建db表NULL最佳实践

发布时间:2020-12-12 06:55:34 所属栏目:MsSql教程 来源:网络整理
导读:当我有一个表,其中有时只填充两个字段在行中创建大量NULL值时,不确定处理NULL值的最佳实践是什么. 是否应将这两个字段移动到一个单独的表中,创建两个没有NULL值的表? 跨这两个表的连接只会返回一个与我的原始表等于NULL的结果,那么它的重点是什么? 似乎没有
当我有一个表,其中有时只填充两个字段在行中创建大量NULL值时,不确定处理NULL值的最佳实践是什么.

是否应将这两个字段移动到一个单独的表中,创建两个没有NULL值的表?

跨这两个表的连接只会返回一个与我的原始表等于NULL的结果,那么它的重点是什么?

似乎没有意义将它们分开,但我已经阅读了一些关于在db中一起避免null的事情.

欢迎任何想法.

解决方法

>纯理论上,NULL应该表示“未知值”.所以 – 再次,纯粹理论上 – 你应该在规范化时设计你的表,这样你就不需要填写NULL值来表示“不适用于这一行”.但是,这一点与任何实际考虑(设计,性能或查询可读性)几乎没有关系.
>实际上,有一些性能考虑因素.在以下情况下,您应该将非常稀疏的数据标准化:

>缩短表格(IO方式和/或空间方式)都有实质性的好处. NULL占用空间,行越宽,性能越差.当表有很多行并且有许多这样的稀疏列时尤其如此.对于只有2个这样的列的小型表,实现的好处可能不值得额外加入的麻烦.>您的查询在WHERE子句中包含相关列. IIRC,查询严重空的列是相当低效的.>另一方面,在某些时候,在查询中有额外的连接可能会损害优化器的性能(至少一旦你的连接有10个表就会这样做 – 从优化器运行时占用CPU资源到实际混淆优化器选一个非常糟糕的计划).解决方案是避免由于规范化而导致表太多(例如,不要将2列拆分成单独的表),或者强制执行查询计划.后者显然是Bad Juju.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读