Przeglądając kod T-SQL można wywnioskować, że osoby mniej doświadczone używają zamiennie dwóch poleceń służących do usuwania wierszy: Delete i Trucate.
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:


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl