説明
このステートメントは、指定されたテーブルを完全に削除しますが、テーブル構造、つまりテーブルで定義されたパーティション情報は保持されます。論理的には、このステートメントはすべての行を削除するための 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