有历史表的优点和缺点是什么?

时间:2010-10-06 15:23:49

标签: sql-server database database-design

更好的做法是什么?:

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

  2. 将历史记录保存在具有不同状态的活动表中?

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

<强>临
如果您将历史记录保存在单独的表中,则仅当您需要搜索过去的某些内容时才会访问此数据。大多数时候主表的使用远远超过历史表。所以这意味着更快的结果 的缺点:
在我工作的一个项目中,我有一个包含350列的表(不要问为什么.....)。因此数据输入时,此表变得非常大。在特定时刻,记录从“活动”状态变为“关闭”状态。我很想将所有已关闭的记录移动到一个新的表(一个历史记录),但我意识到它更慢 - 在很多问题中我不得不建立工会....

作为最后的意见,我认为这取决于每一个案例,但我总是首先考虑单独的表格。

答案 2 :(得分:1)

我更喜欢使用一个表和分区。我还会为活动记录设置一个视图,并在查询活动记录时使用它而不是基表。

答案 3 :(得分:0)

我会去一个单独的表,否则设置UNIQUE和FK约束可能仍然可行,但也参与其中。