我有一个 SQL 2008 表,表中有 773,705,261 行。我想创建一个存档表来存档数据,但我想减少这些数据所需的空间量。访问存档数据的速度不是主要问题,但始终是需要的。
当前的表定义是这样的:
TableID (PK) BIGINT NOT NULL
DocumentID (FK) BIGINT NOT NULL
StatusID (FK) INT NOT NULL
RowCreateDate DATETIME NOT NULL
根据我的计算,当前表在表中每行使用 28 个字节。问题在于,对于每个 DocumentID,它在此表中可能有 6 到 10 行(每个 DocumentID 的行数将来也可能会增加),具体取决于系统处理的状态数量。
我减少存储这些数据所需空间量的第一个想法是为每个 DocumentID 设置 1 行,并拥有一个 XML 字段,其中包含所有 StatusID 和它们发生的时间。像这样的东西:
TableID (PK) BIGINT NOT NULL
DocumentID (FK) BIGINT NOT NULL
Statuses XML NOT NULL
有人对我有什么建议吗?有什么方法可以研究?