Delete vs Truncate in MySQL and MS SQL Server
Delete vs Truncate in MySQL and MS SQL Server
DELETE
- DELETE is a DML command.
- The DELETE statement is executed using a row lock; each row in the table is locked for deletion.
- We can specify filters in where clause
- It deletes specified data if a "where" condition exists.
- Delete activates a trigger because the operations are logged individually.
- Slower than truncate because it keeps logs.
- Rollback is possible.
TRUNCATE
- TRUNCATE is a DDL command.
- TRUNCATE TABLE always locks the table and page but not each row.
- Cannot use the WHERE condition.
- It removes all the data.
- TRUNCATE TABLE cannot activate a trigger because the operation does not log individual row deletions.
- Faster performance-wise, because it doesn't keep any logs.
- Rollback is possible.
- DELETE and TRUNCATE both can be rolled back when used with TRANSACTION (TRUNCATE can be rolled back in SQL Server, but not in MySQL).
- if there is a PK with auto increment, truncate will reset the counter
Learn SQL with us at PCWorkshops!
Comments
Post a Comment