c# - NULLS 应该在代码中还是在数据库中处理?的优点和缺点?

标签 c# sql-server tsql database-design

我有几个关于在何处处理空值的问题。让我设置一个场景。假设我有一个包含 5 个 varchar(50) 列的表,在提供使用 null 或空字符串的原因时用作示例。

  1. 在代码中还是在数据库中处理 NULL 哪个更好?我的意思是,如果 varchar(50) 不包含任何值,则将空字符串分配给它更好,还是将 null 分配给 varchar(50) 并在代码中处理该 null 更好?

    <
  2. 将空字符串分配给列会影响性能开销吗?

  3. 使用 null 与空字符串对索引有何影响?

  4. 我的印象是,如果您不允许数据库包含空值,则不必在代码中处理它。这个说法是真的吗?

  5. 除 varchars 之外的其他数据类型在使用默认值时是否会产生相同的问题,还是字符串数据类型的问题更大?

  6. 如果表包含空值,使用 ISNULL 函数的开销是多少?

  7. 还有哪些优点/缺点?

最佳答案

我的一般建议是将数据库中的字段声明为 NOT NULL 除非您有特定需要允许 null 值,因为它们对新手来说往往非常困难到数据库来处理。

请注意,一个空字符串和一个空字符串字段不一定意味着同一件事(除非您将它们定义为)。 null 通常表示“未知”或“未提供”,而空字符串就是提供的已知空字符串。

允许或禁止 null 字段完全取决于您的需要。

关于c# - NULLS 应该在代码中还是在数据库中处理?的优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792656/

相关文章:

sql - 从表中选择 8k+ 行的最佳方法

sql-server - 聚簇索引

c# - Oracle 和 SQL Server 之间的多线程数据传输 - 网络性能

sql - 有没有更好的方法来编写这个查询?

sql - 为什么我重构的 SQL 运行速度要快几个数量级?

c# - ConcurrentBag.ToObservable() 运行一次并提前完成

c# - 如何避免获得 "possible "null“分配给不可为 null 的实体”

c# - 从 Visual Studio 加载项访问可用类型列表?

sql - 提高性能SP

c# - 单点触控 'Func' 代表?