Jaka jest między nimi różnica?
Zarówno polecenie Delete jak i Truncate służy do usuwania wierszy z tabeli lecz występują znaczące różnice pomiędzy nimi:
- Delete – można użyć klauzuli WHERE w celu wybrania wierszy do usunięcia.
Truncate – usuwa wszystkie wiersze z tabeli. - Truncate działa szybciej niż Delete.
- Delete uruchamia triggery, Truncate nie.
- Delete dla każdego usuniętego wiersza dokonuje wpisu w dzienniku transakcji.
- Truncate usuwa dane poprzez dealokację stron przechowujących dane w tabeli i rejestruje tylko te strony w dzienniku transakcji.
- Delete jest poleceniem DML, a Truncate jest poleceniem DDL
- Truncate resetuje właściwość Identity do wartości początkowych.
Więcej informacji na MSDN: