sql – 创建db表NULL最佳实践

前端之家收集整理的这篇文章主要介绍了sql – 创建db表NULL最佳实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我有一个表,其中有时只填充两个字段在行中创建大量NULL值时,不确定处理NULL值的最佳实践是什么.

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

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

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

欢迎任何想法.

解决方法

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

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

猜你在找的MsSQL相关文章