ELIMINA
- DELETE è un comando DML.
- L'istruzione DELETE viene eseguita utilizzando un blocco riga, ogni riga nella tabella è bloccata per l'eliminazione.
- Possiamo specificare filtri nella clausola where
- Elimina i dati specificati se esiste la condizione.
- Elimina attiva un trigger perché l'operazione viene registrata individualmente.
- Più lento di troncare perché mantiene i log.
- Il rollback è possibile.
TRONCA
- TRUNCATE è un comando DDL.
- TRUNCATE TABLE blocca sempre la tabella e la pagina ma non ogni riga.
- Impossibile utilizzare Where Condition.
- Rimuove tutti i dati.
- TRUNCATE TABLE non può attivare un trigger perché l'operazione non registra le eliminazioni di singole righe.
- Più veloce in termini di prestazioni, perché non conserva alcun registro.
- Il rollback è possibile.
- È possibile eseguire il rollback di DELETE e TRUNCATE se utilizzati con TRANSACTION (il rollback di TRUNCATE può essere eseguito in SQL Server, ma non in MySQL).
- se è presente una PK con incremento automatico, tronca azzera il contatore
http://beginner-sql-tutorial.com/sql-delete-statement .htm