LoginSignup
2
3

More than 3 years have passed since last update.

【Oracle DB】ROWNUMを使って大量データを10万件ずつ削除する

Posted at

テーマ:ROWNUMを使って10万件ずつ削除する

テーブル[BIGDATA]から50万件のデータを削除する。
ROWNUMを使った下記スクリプトを実行し、10万件ずつ削除する。

SQL
DELETE
FROM BIGDATA
WHERE ROWNUM BETWEEN '1' AND '100000';

上記SQLとCOMMITを5回繰り返し、データを削除した。

説明:ROWNUMについて

ROWNUMは、テーブルの取得結果に付けられた連番のことである。
特徴は下記2点。

  1. 連番は”1”からスタートする。
  2. ORDER BY句でソートする前の状態に連番が付与される。

上記SQLではテーブル[BIGDATA]の取得結果に対して、
1番目~100,000番目のデータを削除している。

補足:10万件ずつ削除する理由

  • UNDO領域のパンクを防ぐ
    DELETEしたデータが大きすぎる場合、下記エラーが出現する場合あり。
ORA-30036: UNDO表領域内でセグメントを拡張できません
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3