• 締切済み

数百万件レコードのdelete

DELETEにてWHERE句の条件で数百万件のレコードを削除したいのですが、効率的な方法を教えてください。SQL初心者です。 LOGの肥大化や削除に非常に時間がかかるのを心配してます。

みんなの回答

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

こんにちは。 以下のように分割して削除する方法如何でしょうか。 SET ROWCOUNT 500000 '←削除対象件数中、500000レコード対象で、打ち切る。 DELETE FROM テーブル WHERE COL2=条件 SET ROWCOUNT 0

nenepapa0430
質問者

お礼

そうですね。有難うございます。 300万レコード中、250万件あまりをDELETEしようとしてました。。。 ログ肥大しますよね。。。同テーブルコピーに50万件をINSERTが早かったです。ログも増えませんでした。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

(1)deleteしなくて良いレコードを別テーブルにinsertして(2)元テーブルを消して(3)リネーム、ではダメですか? インデックスや制約など、適用は必要ですが。

noname#39970
noname#39970
回答No.1

全体は どれくらいなの? 数千万件なら仕方ないけど 残る方が圧倒的に少ないのなら残る物を抽出してテーブルそのものを削除じゃダメかな?

関連するQ&A

専門家に質問してみよう