テーブル内のデータが不要になった場合、テーブル内のすべての行を削除して、そのテーブルをクリアできます。
OceanBaseデータベースは、TRUNCATE TABLE ステートメントと DELETE FROM ステートメントを使用して指定したテーブルをクリアすることをサポートしていますが、テーブル構造(テーブルで定義されたパーティション情報を含む)は保持されます。論理的には、TRUNCATE TABLE ステートメントと、すべての行を削除するために使用される DELETE FROM ステートメントの実行結果は同じです。
TRUNCATE TABLEステートメントの使用
TRUNCATE TABLE ステートメントは、テーブル内のすべての行を高速かつ効率的に削除する方法を提供します。また、TRUNCATE TABLE ステートメントはDDLステートメントであるため、ロールバック情報は生成されません。
注意
TRUNCATE TABLE ステートメントを実行するには、そのテーブルの削除および作成権限が必要です。
obclient>TRUNCATE TABLE table_name;
DELETE FROMステートメントの使用
DELETE FROM ステートメントを使用して、テーブル内の行を削除します。
obclient>DELETE FROM table_name;
DELETE FROM ステートメントを使用してテーブルをクリアする場合、テーブルに行が多すぎると、システムリソースを大量に消費します。
TRUNCATE TABLEステートメントとDELETE FROMステートメントの違い
TRUNCATE TABLE操作はテーブルを削除して再作成するため、行ごとに行を削除するよりもはるかに高速です。TRUNCATE TABLEステートメントの実行結果では、影響を受けた行数は常に0行と表示されます。TRUNCATE TABLEステートメントを使用する場合、テーブルマネージャーは最後に使用されたAUTO_INCREMENT値を記録しませんが、カウントは最初から始まります。トランザクション処理中やテーブルロック中は、
TRUNCATE TABLE操作を実行することはできません。データファイルやインデックスファイルが破損していても、テーブル定義ファイルが有効であれば、
TRUNCATE TABLEステートメントを使用して、テーブルを空のテーブルとして再作成できます。