テーマ:ROWNUMを使って10万件ずつ削除する
テーブル[BIGDATA]から50万件のデータを削除する。
ROWNUMを使った下記スクリプトを実行し、10万件ずつ削除する。
SQL
DELETE
FROM BIGDATA
WHERE ROWNUM BETWEEN '1' AND '100000';
上記SQLとCOMMITを5回繰り返し、データを削除した。
説明:ROWNUMについて
ROWNUMは、テーブルの取得結果に付けられた連番のことである。
特徴は下記2点。
- 連番は”1”からスタートする。
- ORDER BY句でソートする前の状態に連番が付与される。
上記SQLではテーブル[BIGDATA]の取得結果に対して、
1番目~100,000番目のデータを削除している。
補足:10万件ずつ削除する理由
- UNDO領域のパンクを防ぐ
DELETEしたデータが大きすぎる場合、下記エラーが出現する場合あり。
ORA-30036: UNDO表領域内でセグメントを拡張できません