はじめに
MySQLでテーブルからデータを削除する際には、TRUNCATE TABLE
とDELETE
の2つの方法があります。これらの違いについて解説します。
TRUNCATE TABLEの特徴
TRUNCATE TABLE
は、テーブルからすべてのデータを一括で削除するコマンドです。以下にその特徴を示します。
- 高速:
TRUNCATE TABLE
は非常に高速に動作します。これは、データを物理的に削除するのではなく、テーブルを空にするだけであるためです。 - ロールバック不可: 一度
TRUNCATE TABLE
を実行すると、それをロールバックすることはできません。すべてのデータが即座に失われます。
以下に、TRUNCATE TABLE
の使用例を示します。
TRUNCATE TABLE your_table;
DELETEの特徴
DELETE
文は、条件に一致するデータを削除するための柔軟な方法を提供します。以下にその特徴を示します。
- 条件指定可能:
DELETE
はWHERE
句を使用して特定の条件に一致するデータだけを削除できます。 - 低速:
DELETE
はTRUNCATE TABLE
よりも処理が遅い傾向があります。これは、データを物理的に削除するためです。 - ロールバック可能:
DELETE
をトランザクション内で使用すると、ロールバックできます。削除されたデータは元に戻ります。
以下に、DELETE
文の使用例を示します。
DELETE FROM your_table WHERE condition;
まとめ
TRUNCATE TABLE
は高速で一括削除が可能な反面、条件指定ができず、ロールバックも不可です。一方で、DELETE
は条件指定やロールバックが可能ですが、処理が遅い傾向があります。使用する際は、要件に応じて適切な方法を選択することが重要です。