テーブル内のデータが不要になった場合、テーブル内のすべてのデータを削除して、そのテーブルをクリアできます。
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ステートメントを使用して、テーブルを空のテーブルとして再作成できます。