sql – Nullable vs. non-null varchar数据类型 – 查询速度更快
我们通常喜欢将所有我们的varchar / nvarchar列作为默认值使用空字符串(”)不可空.该团队中的一个人认为可空的更好是因为:
这样的查询: Select * From MyTable Where MyColumn IS NOT NULL 比这更快: Select * From MyTable Where MyColumn == '' 任何人都有经验来验证这是否是真的? 解决方法在某些平台(甚至版本)上,这取决于索引的空值.我的基本的经验法则是NULL: >不要允许NULL,直到合理 一个很好的例子就是建模地址线.如果你有一个AddressLine1和AddressLine2,第一个有数据和第二个是NULL是什么意思?在我看来,你要么知道地址,要么在一组数据中存在部分NULL,所以当有人连接它们并获得NULL(ANSI行为)时,就会遇到麻烦.您可以通过允许NULL和添加检查约束来解决此问题 – 所有地址信息是NULL还是不存在. 与中间初始/名称相似的东西有些人没有人.这是不同于它是未知的,你在乎吗? ALso,死亡日期 – NULL是什么意思?没死?未知的死亡日期?许多时候,单列不足以编码域中的知识. 所以对我来说,是否允许NULL将在很大程度上取决于数据的语义 – 性能将是第二,因为数据被误解(潜在地由许多不同的人)通常是一个比性能更昂贵的问题. 这似乎是一件小事(在SQL Server中,该实现是与该行一起存储的位掩码),但只有允许在理由之后的NULL才能使我工作得最好.它在开发早期捕获事物,迫使您解决假设并了解您的问题领域. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |