すこし時間が空いてしまいましたが、件数を絞って削除するパターンで時間を計測してみたいと思います。
今回のテスト用のテーブルには date 型のフィールドを設定しています。
レコード削除時に日付を指定して削除を実行してみます。
– TOP を指定しないで範囲削除 –
SET NOCOUNT ON DELETE FROM |
– 削除の処理時間 –
1 回目 | 11 秒 |
2 回目 | 10 秒 |
3 回目 | 14 秒 |
?
続いて TOP と ROWCOUNT を指定して削除してみます。
– 10,000 件ずつ削除 –
SET NOCOUNT ON WHILE(0=0) |
?
– 削除の処理時間 –
1 回目 | 28 秒 |
2 回目 | 23 秒 |
3 回目 | 20 秒 |
特定件数ずつ削除したほうが遅いですね。
単純復旧モデルでチェックポイントを明示的に発生させながら、ログを切り捨てる場合以外は、
件数を指定して削除させるメリットはないかもしれないですね。
今まで処理効率が良いのかなと考えていたのですが違っていたようで。