テーブルに 773,705,261 行の SQL 2008 テーブルがあります。データをアーカイブするためのアーカイブ テーブルを作成したいのですが、このデータに必要な容量を削減したいと考えています。アーカイブされたデータへのアクセス速度は主要な関心事ではありませんが、常に望まれています。
現在のテーブル定義は次のようなものです。
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 行を作成し、すべての StatusID とそれらが発生した回数を含む XML フィールドを作成することです。このようなもの:
TableID (PK) BIGINT NOT NULL
DocumentID (FK) BIGINT NOT NULL
Statuses XML NOT NULL
誰か私におすすめはありますか?私が研究できる方法はありますか?