vol*_*ron 4 mysql postgresql performance
我遇到的一些表没有任何NOT NULL约束,这在查询时产生了一些问题。
我很好奇使用类似的东西是什么感觉NOT NULL DEFAULT '',它会coalesce()在检索/过滤记录时取代函数的需要。另一方面,不是合并,你必须使用CASE语句,或者,如果你仍然想使用合并,你会做类似的事情coalesce(nullif(field_foo,''), field_bar)
从语义上讲, data IS NULL,将其设置为其他东西充其量是尴尬的。我们总是可以假设 NULL 是 NULL,我们知道那是什么。如果您使用,''那么突然之间您必须跟踪您设置为新 NULL 的内容。只在可能的情况下使用系统的构造。
使用 null 值也有问题;查询永远不会将 null 与任何内容匹配;它不是一个值,所以没有任何选项可以匹配它;例外是IS NULL条件,它具有特殊的语义,NULL具有特殊的语义。
此外,您怀疑地利用了数据库的NOT NULL约束。该约束意味着该列始终具有数据。您的数据在技术上满足该约束,但在语义上不满足。
我可以看到设置NOT NULL和使用自制的“NULL”值的唯一原因是当应用程序插入它自己的数据并且它有自己的NULL. 例如,PHPNULL在存储到数据库列时将显示为值,而不是 SQL NULL。然而,这可以通过在应用程序中进行适当的编程来避免,如果我无法控制插入“假空值”的应用程序,我只会考虑“假空值”解决方案——在这一点上,战斗失败了,你的解决方案变得最适用。
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |