一回も披露したことのない豆知識

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

A 回答 (3件)

こんにちは。



以下のように分割して削除する方法如何でしょうか。

SET ROWCOUNT 500000 '←削除対象件数中、500000レコード対象で、打ち切る。
DELETE FROM テーブル WHERE COL2=条件
SET ROWCOUNT 0
    • good
    • 5
この回答へのお礼

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

お礼日時:2007/07/12 23:22

(1)deleteしなくて良いレコードを別テーブルにinsertして(2)元テーブルを消して(3)リネーム、ではダメですか?



インデックスや制約など、適用は必要ですが。
    • good
    • 1

全体は どれくらいなの?


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報

このQ&Aを見た人がよく見るQ&A