- 締切済み
数百万件レコードのdelete
DELETEにてWHERE句の条件で数百万件のレコードを削除したいのですが、効率的な方法を教えてください。SQL初心者です。 LOGの肥大化や削除に非常に時間がかかるのを心配してます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- pkh4989
- ベストアンサー率62% (162/260)
回答No.3
こんにちは。 以下のように分割して削除する方法如何でしょうか。 SET ROWCOUNT 500000 '←削除対象件数中、500000レコード対象で、打ち切る。 DELETE FROM テーブル WHERE COL2=条件 SET ROWCOUNT 0
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.2
(1)deleteしなくて良いレコードを別テーブルにinsertして(2)元テーブルを消して(3)リネーム、ではダメですか? インデックスや制約など、適用は必要ですが。
noname#39970
回答No.1
全体は どれくらいなの? 数千万件なら仕方ないけど 残る方が圧倒的に少ないのなら残る物を抽出してテーブルそのものを削除じゃダメかな?
お礼
そうですね。有難うございます。 300万レコード中、250万件あまりをDELETEしようとしてました。。。 ログ肥大しますよね。。。同テーブルコピーに50万件をINSERTが早かったです。ログも増えませんでした。