sql-server - 使用历史表的优缺点是什么?

标签 sql-server database database-design

什么是更好的做法?:

  1. 将历史记录保存在单独的历史表中

  2. 在不同状态的事件表中保留历史记录?

在我看来,我宁愿保留一个单独的表,以避免创建一个包含重复记录的巨大表,这可能会在查询表时导致不必要的延迟时间。

最佳答案

我的偏好一直是有一个单独的历史记录表,纯粹是因为它不需要“WHERE Status = 'LIVE'”或“WHERE CurrentRecord = 1”来获取最新记录(我不会得到到一个需要内联查询来获取 max(version) 以获得最新版本的设计中)。这应该意味着当前记录表应该保持较小并且访问时间可能会有所改善等。在最坏的情况下,我已经看到针对表的临时查询选择了错误版本的记录,导致各种问题以后的问题。

此外,如果您已经从另一个表中获取历史记录,则可以对数据进行分片,因此一年中的所有历史记录都在一个表/数据库中,而另一年的所有历史记录都在另一个表/数据库中,依此类推。

关于sql-server - 使用历史表的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3874111/

相关文章:

php - 有什么更好 : more Colums with Null or More tables?

ruby-on-rails - rails : Every user has a own database user

iPhone 。索引属性

sql - Linq to 3 个没有外键的表

sql-server - 在 having 子句中使用 count 没有返回行

sql-server - 为什么不能将 GETDATE() 用作过程参数的默认值或 EXECUTE 语句中的值?

sql-server - 使用Count时如何查看EntityFramework生成的sql

java - 通过 JDBC 的 Postgres 连接 : org. postgresql.util.PSQLException: ERROR: relation "prescriptions"does not exist

带或不带空占位符的 MongoDB 模式设计

mysql - 如何重置序列号以使其连续?