更好的做法是什么?:
将历史记录保存在单独的历史记录表中
将历史记录保存在具有不同状态的活动表中?
在我看来,我宁愿保留一个单独的表,以避免创建一个包含重复记录的大表,这可能会在查询表时导致不必要的延迟时间。
答案 0 :(得分:2)
我的偏好一直是有一个单独的历史表,纯粹是因为它不需要有“WHERE Status ='LIVE'”或“WHERE CurrentRecord = 1”来获取最新记录(我不会得到)进入一个需要内联查询以获得最大(版本)以获取最新版本的设计。它应该意味着当前记录表应该保持较小并且访问时间可以改善等。在最坏的情况下,我已经看到针对表的临时查询拾取错误版本的记录,导致所有类别以后的问题。
另外,如果您已经从另一个表中获取历史记录,则可以对数据进行分片,因此一年中的所有历史记录都在一个表/ db中,而另一个表中的所有历史记录都在另一个表/ db中,依此类推。 / p>
答案 1 :(得分:1)
<强>临强>
如果您将历史记录保存在单独的表中,则仅当您需要搜索过去的某些内容时才会访问此数据。大多数时候主表的使用远远超过历史表。所以这意味着更快的结果
的缺点:强>
在我工作的一个项目中,我有一个包含350列的表(不要问为什么.....)。因此数据输入时,此表变得非常大。在特定时刻,记录从“活动”状态变为“关闭”状态。我很想将所有已关闭的记录移动到一个新的表(一个历史记录),但我意识到它更慢 - 在很多问题中我不得不建立工会....
作为最后的意见,我认为这取决于每一个案例,但我总是首先考虑单独的表格。
答案 2 :(得分:1)
我更喜欢使用一个表和分区。我还会为活动记录设置一个视图,并在查询活动记录时使用它而不是基表。
答案 3 :(得分:0)
我会去一个单独的表,否则设置UNIQUE和FK约束可能仍然可行,但也参与其中。