sql – Nullable vs. non-null varchar数据类型 – 查询速度更快?

前端之家收集整理的这篇文章主要介绍了sql – Nullable vs. non-null varchar数据类型 – 查询速度更快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们通常喜欢将所有我们的varchar / nvarchar列作为默认值使用空字符串(”)不可空.该团队中的一个人认为可空的更好是因为:

这样的查询

Select * From MyTable Where MyColumn IS NOT NULL

比这更快:

Select * From MyTable Where MyColumn == ''

任何人都有经验来验证这是否是真的?

解决方法

在某些平台(甚至版本)上,这取决于索引的空值.

我的基本的经验法则是NULL:

>不要允许NULL,直到合理
>不要允许NULL,除非数据真的是未知的

一个很好的例子就是建模地址线.如果你有一个AddressLine1和AddressLine2,第一个有数据和第二个是NULL是什么意思?在我看来,你要么知道地址,要么在一组数据中存在部分NULL,所以当有人连接它们并获得NULL(ANSI行为)时,就会遇到麻烦.您可以通过允许NULL和添加检查约束来解决此问题 – 所有地址信息是NULL还是不存在.

与中间初始/名称相似的东西有些人没有人.这是不同于它是未知的,你在乎吗?

ALso,死亡日期 – NULL是什么意思?没死?未知的死亡日期?许多时候,单列不足以编码域中的知识.

所以对我来说,是否允许NULL将在很大程度上取决于数据的语义 – 性能将是第二,因为数据被误解(潜在地由许多不同的人)通常是一个比性能更昂贵的问题.

这似乎是一件小事(在sql Server中,该实现是与该行一起存储的位掩码),但只有允许在理由之后的NULL才能使我工作得最好.它在开发早期捕获事物,迫使您解决假设并了解您的问题领域.

猜你在找的MsSQL相关文章