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

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

发布时间:2020-12-12 08:33:00 所属栏目:MsSql教程 来源:网络整理
导读:我们通常喜欢将所有我们的varchar / nvarchar列作为默认值使用空字符串(”)不可空.该团队中的一个人认为可空的更好是因为: 这样的查询: Select * From MyTable Where MyColumn IS NOT NULL 比这更快: Select * From MyTable Where MyColumn == '' 任何人都
我们通常喜欢将所有我们的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才能使我工作得最好.它在开发早期捕获事物,迫使您解决假设并了解您的问题领域.

(编辑:李大同)

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

    推荐文章
      热点阅读