説明
このステートメントは、指定されたテーブルを完全に削除しますが、テーブル構造(テーブルで定義されたパーティション情報を含む)は保持します。論理的には、このステートメントはすべての行を削除する DELETE FROM ステートメントと同じです。
使用制限と注意事項
TRUNCATE TABLE操作は、テーブル内のすべてのデータを削除し、テーブルのメタデータをリセットすることで、効率的にテーブルを空にすることを実現します。この方法は、行ごとの削除(DELETE FROMステートメントの使用)に比べて、特に大規模なデータテーブルを処理する際に、行ごとのロックやログ記録が不要であるため、顕著な性能優位性があります。TRUNCATE TABLEステートメントの実行結果では、影響を受けた行数は常に0行と表示されます。TRUNCATE TABLEステートメントを使用すると、テーブルマネージャーは最後に使用されたAUTO_INCREMENT値を覚えていませんが、カウントは最初から始まります。TRUNCATEステートメントは、トランザクション処理中やテーブルがロックされている間は実行できません。使用するとエラーが発生します。データまたはインデックスファイルが破損していても、テーブル定義ファイルが有効であれば、
TRUNCATE TABLEを使用してテーブルを空のテーブルとして再作成できます。
権限要件
TRUNCATE TABLE ステートメントを実行するには、現在のユーザーがテーブルに対する DROP 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、MySQLモードの権限分類を参照してください。
構文
TRUNCATE [TABLE] table_name;
パラメータの説明
パラメータ |
説明 |
|---|---|
| table_name | テーブル名を指定します。 |
例
テーブル
test_tbl1を作成します。CREATE TABLE test_tbl1(col1 INT AUTO_INCREMENT PRIMARY KEY, col2 VARCHAR(20)) PARTITION BY HASH(col1) PARTITIONS 5;テーブル
test_tbl1にテストデータを挿入します。INSERT INTO test_tbl1(col2) VALUES('A1'),('A2'),('A3');実行結果は次のとおりです:
Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0テーブル
test_tbl1を完全にクリアします。TRUNCATE TABLE test_tbl1;テーブル
test_tbl1のデータを確認します。SELECT * FROM test_tbl1;実行結果は次のとおりです:
Empty setテーブル
test_tbl1の定義を確認します。SHOW CREATE TABLE test_tbl1;実行結果は次のとおりです:
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | test_tbl1 | CREATE TABLE `test_tbl1` ( `col1` int(11) NOT NULL AUTO_INCREMENT, `col2` varchar(20) DEFAULT NULL, PRIMARY KEY (`col1`) ) AUTO_INCREMENT = 1 AUTO_INCREMENT_MODE = 'ORDER' DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 partition by hash(col1) (partition `p0`, partition `p1`, partition `p2`, partition `p3`, partition `p4`) | +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set