其次,像这样的软删除意味着您现在必须在这个表上的每个查询中包含一个 WHERE IsDeleted = false子句(如果您正在连接这些表,情况会更糟)。一旦用户或测试人员注意到被删除的记录再次出现,就会发现这里的错误,这可能需要一些时间。此外,开发人员很容易在 COUNT (*)查询中忽略 WHERE 子句,这可能需要更长的时间才能发现(我在一个项目中工作,这种情况已经发生了多年; 没有多少记录被“删除”,所以总数接近预期,没有人注意到)。
2)
通过软删除,您将创建不必要的关于 is _ active 的查询或关于某个时间戳列的查询。当您编写更简单的查询时,这只是浪费。是的,它将与视图一起工作,但视图不是一个额外的附件吗?每一个视图都是一个额外的 SQL,额外的性能成本,在任何商业 RDBMS 下面的一切都只是一个表。视图没有什么神奇之处,除了您不知道如何在表顶部编写查询这一事实。