【问题标题】:Database: Active and Inactive data in same or separate Tables数据库:相同或不同表中的活动和非活动数据
【发布时间】:2011-12-16 13:49:55
【问题描述】:

我面临的情况是我的所有数据都使用一个表,或者 为我的活动数据创建一个表,并在完成数据后将其移至存档表。

要存储的数据是作业信息,其中可能有大约 100 个活动作业。这整个列表和所有信息经常被抓取并显示在屏幕上。随着工作的进展,它也会经常更改。

但是一旦作业完成,就不需要更改,只需搜索已完成的作业。实际上,总共只有很少的条目(每年大约 2000 个)。

如果将过去的作业保存在单独的表中,那么频繁查询活动作业的速度会不会提高很多?还是为了简单起见,活动作业和已完成作业是否应该与已完成属性位于同一个表中?

【问题讨论】:

    标签: database


    【解决方案1】:

    这部分取决于您的服务器,但任何索引良好的表在每年 2000 个表中查找 100 个活动工作都应该没有问题。我认为归档作业的开销会比您看到的任何好处都多。

    【讨论】:

      【解决方案2】:

      通常,您描述的体积不应该对您的设计起决定性作用。即使您的工作表设计为单个记录占用 1 kb,该表也会以 2 mb/年的速度增长。这张表需要相当长的时间才能增长到会严重影响服务器整体性能的东西。

      相反,正如 Stuart 在他的回答中所说,您应该查看维护历史表的工作:您需要在设计方面保持这两个表同步,以便当前表中的任何更改都不会t打破历史表。您必须编写脚本来移动数据 - 如果您想同时查看当前和历史数据,则必须编写统一这两个表的查询。

      或者,您可以添加一个位/布尔列“活动”,并根据员工的状态打开和关闭此位。或者,如果您想制作更高级的解决方案,请添加开始日期和结束日期并以这种方式构建详细的历史记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多