テーブル内のデータが不要になった場合、そのテーブルのすべてのデータを削除してクリアすることができます。
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 ステートメントを使用してテーブルの行を削除することもできます。また、DELETE はDMLステートメントであり、ロールバックが可能です。
例:
obclient>DELETE FROM table_name;
DELETE FROM ステートメントを使用してテーブルをクリアする場合、テーブルに多くの行があると、システムリソースを大量に消費します。
TRUNCATE TABLEステートメントとDELETE FROMステートメントの違い
TRUNCATE TABLE ステートメントと DELETE FROM ステートメントの違いは以下のとおりです:
TRUNCATE TABLEステートメントの実行結果では、影響を受けた行数は常に0行と表示されます。TRUNCATE TABLEステートメントを使用する場合、テーブルマネージャーは最後に使用されたAUTO_INCREMENT値を記録しませんが、カウントは最初から始まります。トランザクション処理中やテーブルロック中は、
TRUNCATE TABLE操作を実行することはできません。データファイルやインデックスファイルが破損していても、テーブル定義ファイルが有効であれば、
TRUNCATE TABLEステートメントを使用してテーブルを空のテーブルとして再作成できます。