Microsoft は、 SQL 2005 パーティションの変更に関するMSDNエントリで、考えられるいくつかのアプローチを挙げています。
- 目的のパーティション関数を使用して新しいパーティション テーブルを作成し、INSERT INTO...SELECT FROM ステートメントを使用して、古いテーブルのデータを新しいテーブルに挿入します。
- ヒープ上にパーティション化されたクラスター化インデックスを作成する
- DROP EXISTING = ON 句を指定した Transact-SQL CREATE INDEX ステートメントを使用して、既存のパーティション インデックスを削除して再構築します。
- 一連の ALTER PARTITION FUNCTION ステートメントを実行します。
データが 1 ~ 2 年にわたって分散する、レコードの日付に基づくパーティション (毎月のパーティションのようなもの) を持つ大規模な DB (数百万のレコード) にとって最も効率的な方法は何か考えはありますか?
また、最近の情報に (読み取るために) アクセスすることが多い場合、最後の X 日間はパーティションを保持し、残りのデータはすべて別のパーティションにすることは理にかなっていますか? それとも、残りのデータも分割する方がよいでしょうか (日付範囲に基づくランダム アクセスの場合)。