TRUNCATE [TABLE] tbl_name
TRUNCATE TABLE empties a table completely.
Logically, this is equivalent to a DELETE
statement that deletes all rows, but there are practical
differences under some circumstances.
For InnoDB, TRUNCATE TABLE
is mapped to DELETE, so there is no
difference.
For other storage engines, TRUNCATE TABLE
differs from DELETE in the following ways
from MySQL 4.0 onward:
Truncate operations drop and re-create the table, which is much faster than deleting rows one by one, particularly for large tables.
Truncate operations are not transaction-safe; an error occurs when attempting one in the course of an active transaction or active table lock.
Truncation operations do not return the number of deleted rows.
As long as the table format file
is valid, the table can be re-created as an empty table with
tbl_name.frmTRUNCATE TABLE, even if the data or index
files have become corrupted.
The table handler does not remember the last used
AUTO_INCREMENT value, but starts counting
from the beginning. This is true even for
MyISAM and InnoDB,
which normally do not reuse sequence values. (Some older
versions may not reset the AUTO_INCREMENT
value. In this case, you can use ALTER TABLE
after the tbl_name
AUTO_INCREMENT=1TRUNCATE
TABLE statement.)
In MySQL 3.23, TRUNCATE TABLE is mapped to
COMMIT; DELETE FROM
, so it behaves
like tbl_nameDELETE. See Section 12.2.1, “DELETE Syntax”.
TRUNCATE TABLE was added in MySQL 3.23.28,
although from 3.23.28 to 3.23.32, the keyword
TABLE must be omitted.

User Comments
Add your own comment.