Removing All Rows with TRUNCATE TABLE

TRUNCATE TABLE is a fast, nonlogged method of deleting all rows in a table. It is almost always faster than a DELETE statement with no conditions, because DELETE logs each change, and TRUNCATE TABLE logs only the deallocation of whole data pages. TRUNCATE TABLE immediately frees all the space occupied by that table's data and indexes. The distribution pages for all indexes are also freed.

As with DELETE, a table emptied with the TRUNCATE TABLE statement remains in the database (along with its indexes and other associated objects) unless you enter a DROP TABLE statement.

Permission to use the TRUNCATE TABLE statement, like DROP TABLE, defaults to the table owner and cannot be transferred.

A TRUNCATE TABLE statement does not fire a DELETE trigger. For details on triggers, see Using Stored Procedures and Triggers. For details on the TRUNCATE TABLE statement, see the TRUNCATE TABLE statement in the Microsoft SQL Server Transact-SQL Reference.

Because TRUNCATE TABLE a nonlogged operation, it is recommended that you dump the database using the DUMP DATABASE statement after using TRUNCATE TABLE.