【问题标题】:Data timeline performance in Sql ServerSql Server 中的数据时间线性能
【发布时间】:2008-10-29 13:32:51
【问题描述】:

我有一个三列的表格:

用户 varchar、状态 varchar、rep int

status 和 rep 经常更新,其中一项要求是:

给定日期时间值,查看每个用户在给定日期的状态和代表值。

我可以在表中添加一个 updated_at 日期时间列,并使用同一用户插入新行而不是更新现有行,但是表变大了,我需要将查询结果与其他表的类似结果连接起来,因此我需要快速查询。

在 SQL Server 中解决此问题的最佳解决方案是什么?

【问题讨论】:

    标签: sql-server performance datetime timeline


    【解决方案1】:

    根据您将如何使用报告信息,最好创建一个历史表,在更新主表之前,将当前值写入历史表,并添加时间戳。

    如果您真的只从历史记录中挑选特定的日期/用户/状态,那将是最好的

    【讨论】:

      【解决方案2】:

      我会将此存储为单独的相关表,因为我假设大多数时候您只会在加入时查询当前状态。如果您将进行大量此类查询并将此类数据添加到许多表中,而不仅仅是此表,我将创建一个单独的 OLAP 数据库用于报告。

      顺便说一句,只要您这样做,您可能会考虑是否要同时记录谁进行了更改。那么你基本上已经构建了一个审计解决方案。

      【讨论】:

        【解决方案3】:

        此的一个选择是使用两个单独的表:“当前值”的表,和一个历史表。当前值表将包含每个用户的唯一最新值,这将使其保持小且易于连接。历史表将包含您列出的三列以及时间戳列,并将跟踪值随时间的变化。任何时候你想改变当前值表中的值,你将同时添加一行新值历史记录表格,使用GETTIME()作为时间戳。 P>

        【讨论】:

          猜你喜欢
          • 2023-04-08
          • 2015-02-15
          • 2016-10-24
          • 1970-01-01
          • 2016-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多