開発者がデータベースをローカルマシンにロードできるように、いくつかのデータベースを縮小しようとしています。X日より古いレコードを削除すると、データベース全体のサイズ(50%以上)が大幅に減少する履歴データ(10年以上の価値)を保持するテーブルをいくつか特定しました。
私が使用しているdeleteステートメントを以下に示しますが、私の質問は、このdeleteステートメントの速度をどのように改善できるかということです。データベースはすでに単純なログ形式になっていますが、ログは引き続きdeleteステートメントで大きくなります。より良いロギング方法はありますか?
私はこれを行う方が良いでしょうか:
- 保持したいデータを現在のテーブルから一時テーブルにコピーし、
- プライマリテーブルを切り捨て、
- データを一時からプライマリに戻し、
- シュリンクログ、
- 縮小する必要のあるすべてのテーブルを処理したら、データベースを縮小します。
クエリの例:
DELETE FROM LoginAttempts WHERE DateAttempt <= GETDATE() - 30