2

我一直无法确定临时表历史的存储方式。如果您有一个包含几列 nvarchar 数据和一个定期更新的库存数量列的表,SQL Server 是否为每次对库存数量所做的更改存储静态列的副本,或者是否有一种面向对象的方法来存储数据? 我想在历史记录中包含所有列,因为 nvarchar 列可能会有很少的更改,但如果数百万个数量更新复制其他列,请注意表历史记录大小。

4

1 回答 1

1

我建议您仅将 SQL Server 时态表用于需要监视的值,否则固定不变的属性值将随着每次更改而重复。每当发生行更新时,SQL Server 都会存储一个全新的行。请参阅文档

UPDATES:在 UPDATE 时,系统将行的先前值存储在历史表中,并根据系统时钟将 SysEndTime 列的值设置为当前事务的开始时间(在 UTC 时区)

您需要将固定的 varchar 属性/字段移动到另一个表并使用关系、1:1 或任何合适的关系。

temporal-tables还要检查标签下的其他相关问题:

SQL Server - 临时表 - 存储成本

SQL Server 时态表创建重复记录

时态历史表中的重复项

于 2018-04-16T11:38:09.443 回答