Sql server Sql Server中的数据时间轴性能
我有一个有三列的表: 用户varchar、状态varchar、rep int 状态和代表经常更新,其中一项要求是: 给定日期时间值查看每个用户在给定日期的状态和代表值。 我可以向表中添加一个updated_at datetime列,并插入同一用户的新行,而不是更新现有行,但是表变大了,我需要将查询结果与其他表中的类似结果连接起来,因此我需要快速查询Sql server Sql Server中的数据时间轴性能,sql-server,performance,datetime,timeline,Sql Server,Performance,Datetime,Timeline,我有一个有三列的表: 用户varchar、状态varchar、rep int 状态和代表经常更新,其中一项要求是: 给定日期时间值查看每个用户在给定日期的状态和代表值。 我可以向表中添加一个updated_at datetime列,并插入同一用户的新行,而不是更新现有行,但是表变大了,我需要将查询结果与其他表中的类似结果连接起来,因此我需要快速查询 SQL Server中解决此问题的最佳解决方案是什么?根据报告信息的具体使用方式,最好创建一个历史记录表,在更新主表之前,将当前值写入历史记录表,并
SQL Server中解决此问题的最佳解决方案是什么?根据报告信息的具体使用方式,最好创建一个历史记录表,在更新主表之前,将当前值写入历史记录表,并添加时间戳
如果您真的只是从历史记录中选择特定的日期/用户/状态,那将是最好的我将存储这是一个单独的相关表,因为我假设在大多数情况下,您在加入时只会查询当前状态。如果您将进行大量此类查询,并将此类数据添加到许多表中,而不仅仅是这个表,我将创建一个单独的OLAP数据库用于报告
顺便说一下,只要你这样做,你可能会考虑是否要记录谁做出了改变。然后您基本上构建了一个审计解决方案 一个选项是使用两个单独的表:一个“当前值”表和一个历史表。current values表将只包含每个用户的最新值,这将使其保持较小且易于连接。历史记录表将包含您列出的三列以及时间戳列,并将跟踪随时间变化的值。只要您想更改当前值表中的一个值,您就可以使用gettime()作为时间戳,同时向历史记录表中添加一行新值