Cel mai bun răspuns
În primul rând „NU ESTE POSIBIL TRUNCAREA UN CÂMP”.
Trunchierea este un concept în baza de date care nu este ca o declarație de ștergere sau o actualizare. Principalul concept al Truncate este modul în care sunt tratate meta-datele din spatele scenei. Dacă lucrați cu Oracle, puteți studia un concept numit „High Water Mark” . O puteți găsi în foarte multe detalii în blogul Burleson aici.
În Server SQL dacă vă gândiți la o cheie primară cu valoare de creștere automată, trunchiați-o, setați-o la bază. Mă refer la valoarea inițială definită de dvs. sau implicită 1. Deci, practic, ce operațiuni face în back-end este mai specifică meta-datelor și mai specifică proprietății la nivel de tabel a unei baze de date.
Acum, dacă ați vrut să însemnați că doriți să curățați o coloană, puteți declanșa o actualizare cu NULL pentru coloana respectivă sau puteți actualiza cu .
Update TABLE
Set Column = NULL/’’
Where 1 =1
Am menționat acest lucru ultima dată unde pentru că acum o mulțime de baze de date nu vă permit să actualizați întreaga coloană fără o clauză unde. În mySql a apelat ca „semnalizare actualizare sigură” . Dar, pentru a fi mai specific, actualizați întotdeauna cu NULL în loc de ‘’ pentru a urma o bună practică
Răspuns
ȘTERGERE este o operație înregistrată pe un rând. Aceasta înseamnă că ștergerea fiecărui rând este înregistrată și eliminată fizic. Puteți șterge orice rând care nu implică o încălcare a restricției, lăsând în același timp cheia externă sau orice alte restricții.
TRUNCATE este o operație înregistrată, dar într-un mod diferit. TRUNCATE înregistrează locația ofertei paginilor de informații în care există informații. Alocarea de pagini de informații înseamnă că rândurile dvs. de informații există încă în paginile de informații, dar extensiile sunt marcate ca goale pentru reutilizare. Aceasta este ceea ce face TRUNCATE o operațiune mai rapidă de efectuat peste DELETE. Nu se poate trunchia un tabel care are constrângeri de cheie străină. Trebuie să eliminați constrângerile, să tăiați tabelul și să aplicați din nou constrângerile.
TRUNCATE va reseta orice coloane de identitate la inițializarea valorii implicite. Aceasta înseamnă că, dacă aveți un tabel cu o coloană de identitate și are 264 de rânduri cu o valoare inițială de 1, ultima sa înregistrare va avea valoarea 264 (presupunând că ați început cu valoarea 1) în coloanele identității dvs. După tăierea tabelului când introduceți o nouă înregistrare în tabelul gol, coloana de identitate va avea valoarea 1. ȘTERGERE câștigată „t. În același scenariu, dacă rândul curent, inserarea unui rând nou în tabelul gol , coloana de identitate are o valoare de 265.
De ce Trunchierea este mai rapidă decât Ștergere?
Motiv: În scrierea pentru ștergerea tuturor informațiilor este copiată în spațiul tabelei de revenire și apoi se efectuează operația de ștergere. Deci, atunci când tastați ROLLBACK după ștergerea unui tabel, puteți recupera informațiile (metoda obțineți-o pentru ritmul tabelelor de revenire). Acest întreg tehnica va dura timp, dar când utilizați TRUNCATE, elimină informațiile direct fără a le copia în spațiul de tabelă Rollback. Deci TRUNCATE este mai rapid. De două ori trunchiat nu puteți recupera informațiile.