Różnica między TRUNCATE a DELETE

Oba usuwają wiersz z tabeli – TRUNCATE wszystkie, DELETE dowolnie wybrane przez użytkownika. Główna i najważniejsza różnica to, że TRUNCATE jest szybszy od DELETE, a zawdzięcza to temu, że nie zapisuje każdej operacji usunięcia w logach. Natomiast DELETE loguje wszystkie zmiany, przez co jest wolniejszy.
Mały update jeszcze:
Jeśli na jakimś polu mamy autoincrement, to po TRUNCATE indeks ten zostanie zresetowany i nowe rekordy będą numerowane od 1. Natomiast po użyciu DELETE resetu nie będzie.

5 przemyśleń nt. „Różnica między TRUNCATE a DELETE”

  1. Oczywiście, że ważne jest, że dane są tracone bezpowrotnie, jednak zauważ że wspomniałam tutaj o logowaniu zmian. Wydało mi się to jednoznaczne, ale widać był to zbyt duży skrót myślowy. Generalnie jednak, jestem przekonana, że nikt rozsądny nie pokusi się o komendę truncate czy delete na całej tabeli nie będąc pewnym że:
    a) to właśnie jest jego celem
    b) ma backup bazy.

  2. Zauważ, że post jest napisany dla osób, które szukają odpowiedzi a nie dla profesjonalistów, więc należy używać dokładnej wiedzy i nie stosować skrótów.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *