database - 保留空数据库单元格的最佳方法是什么?

标签 database

我对数据库不是很熟悉。如果我有一个包含大量空单元格的数据库表,保留它们的最佳方法是什么(例如,这样性能不会降低,内存不会被消耗,如果这可能的话)?

我知道有一个“空”值。是否有没有缺点的“无”值或等效值?或者只是不填充单元格,它被认为是空的,所以没有什么可做的?对不起,如果这是一个愚蠢的问题。有时候你不知道你不知道什么......

不要试图讨论规范化数据库。只是想知道对于空白/空/无单元格的传统看法是什么。

谢谢

最佳答案

惯例是使用 null 来表示缺失值。这就是 SQL 中 null 的用途。

著名的数据库研究员 C. J. Date 经常写到他反对在逻辑级别处理 SQL 中的空值,他会说任何可能丢失的列都属于一个单独的表,因此缺少一行对应于一个缺失值。

我不知道使用 null 有任何严重的效率缺陷。任何功能的效率取决于您使用的特定数据库实现。您还没有说您使用的是 MySQL、Oracle、Microsoft SQL Server 还是其他。

例如,MySQL 的 InnoDB 存储引擎不会在行的列之间存储空值,它只存储非空列。其他数据库可能会以不同的方式执行此操作。同样,应该有效地处理索引中的空值,但它因产品而异。

关于database - 保留空数据库单元格的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232540/

相关文章:

java - Spring应用程序连接到数据库

database - Oracle更新其中select语句返回多行错误

数据库触发器和 JMS

java - 在 Jar 中打包和使用嵌入式数据库(H2.db 文件)?

mysql - 在mysql中使用REGEXP进行搜索,不包含重复字符

sql-server - 将包含子查询的 T-SQL 查询重写为使用连接

mysql - 使用 student_id 显示学生出勤情况的单一查询

sql - 在生产 mysql 数据库上进行复杂模式更新的最简单方法是什么?

ruby-on-rails - 如何使用 Rails 保护数据库中的用户数据?

java - 使用 JDBC 的多数据库连接(如 DB2、MySQL 等)的设计方法