11.1.8 実表の全行を削除する方法
実表の全行を削除する場合,基本的には,操作系SQLのTRUNCATE TABLE文を実行することを推奨します。
TRUNCATE TABLE文を実行すると,DELETE文(WHERE 探索条件を省略)よりも短時間で全行を削除できます。また,セグメントが解放されるため,削除した行データが格納されていた領域を再利用できます。
TRUNCATE TABLE文とDELETE文の違いについて,次の表に示します。
項番 |
比較項目 |
TRUNCATE TABLE文 |
DELETE文(WHERE 探索条件を省略) |
---|---|---|---|
1 |
処理性能 |
|
|
2 |
セグメントの解放 |
|
|
3 |
COMMIT文の実行要否 |
|
|
4 |
排他制御(同一表に対するSELECT文との同時実行の可否)※ |
|
|
5 |
推奨する実行タイミング |
|
|
- 注※
-
TRUNCATE TABLE文およびDELETE文を実行したときに確保される排他資源と排他制御モードの詳細については,「2.10.5 確保される排他資源と排他制御モード」を参照してください。
実表の全行を削除する指定例を次に示します。
- 指定例
-
販売履歴表(SALESLIST)内の全行を削除します。
TRUNCATE TABLE "SALESLIST"
TRUNCATE TABLE文の指定形式および規則については,マニュアルHADB SQLリファレンスの操作系SQLのTRUNCATE TABLE(実表の全行削除)を参照してください。
- 重要
-
全行を削除する前に,削除する行が定義されている実表に対して,コマンドの再実行が必要かどうか(実表が更新不可状態かどうか)を確認してください。確認する方法については,「10.9.2 実表の状態や使用量を確認したい場合」の「(1) 実表が更新不可状態かどうかを確認する場合」を参照してください。
- コマンドの再実行が必要な場合
-
コマンドを再実行してください。そのあとで,全行を削除してください。
- コマンドの再実行が必要な状態のままで(実表が更新不可状態のままで)全行を削除した場合
-
中断したコマンドによって作成された作業用一時ファイルが残ることがあります。作業用一時ファイルを削除するには,すべての実表の更新不可状態を解除する必要があります。
作業用一時ファイルの削除については,「16.2.6 コマンド実行時の作業用一時ファイルを格納するディスクの空き容量が不足した場合の対処方法」の「(2) ディスクに不要な作業用一時ファイルが残っている場合」を参照してください。