Comparativ cu instrucțiunea DELETE, TRUNCATE TABLE are următoarele avantaje:
Folosiți o cantitate mai mică de jurnal de tranzacții.
instrucțiune DELETE șterge un rând și înregistrează intrarea de tranzacție pentru fiecare rând șters. TRUNCATE TABLE șterge date, eliberând paginile de date utilizate pentru a stoca tabele de date, precum și înregistrările jurnal de tranzacții numai pentru eliberarea de pagini de date.
De obicei folosit mai puține încuietori.
Dacă instrucțiune DELETE este executată cu blocarea linii pentru a elimina fiecare rând al tabelului este blocat. TABLE TRUNCATE blochează întotdeauna tabel și pagină, nu pe fiecare rând.
Tabelul este zero numărul de pagini, fără excepție.
După efectuarea unei declarații de ștergere din tabel poate fi încă o pagină goală. De exemplu, pentru a elibera pagini goale în grămadă, aveți nevoie de cel puțin o blocare de masă exclusivă (LCK_M_X). Dacă operația de ștergere nu utilizează un sistem de blocare de masă, masa (un morman) va conține mai multe pagini goale. Indicii după îndepărtarea poate fi o pagină goală, cu toate că aceste pagini vor fi eliberați rapid proces de curățare de fond.
TRUNCATE instrucțiune TABEL elimină toate rândurile din tabel, dar structura de masă și coloanele sale, constrângeri, și indicele m. P. Retained. Pentru a elimina nu numai datele din tabel, dar definiția sa, utilizați TABLE DROP.
Dacă tabelul conține coloana identificator, contorul coloanei este resetat la o valoare inițială stabilită pentru acea coloană. În cazul în care valoarea inițială nu este specificată, valoarea implicită 1. Pentru a păstra coloana de identitate, folosiți instrucțiunea DELETE.
restricţii
TABELUL Instrucțiunea TRUNCATE nu poate fi utilizat pentru tabele, pentru care sunt îndeplinite următoarele condiții:
Pe masa de referință de către o cheie externă. (Tabelul având cheia externă, care se referă la el însuși, poate trunchia).
Tabelul face parte din punctul de vedere indexată.
Pentru ar trebui folosite tabele cu oricare dintre aceste caracteristici instrucțiuni DELETE.
TABLE TRUNCATE nu poate activa pe trăgaci, din moment ce nu se logheaza eliminarea liniilor individuale. Pentru informații suplimentare. A se vedea CREATE TRIGGER (Transact-SQL).
Trunchierea de mese mari
În Microsoft SQL Server este posibil să se șteargă sau trunchia tabele care au mai mult de 128 de extensii fără a deține încuietori simultane pe toate extinderile destinate eliminării. Pentru mai multe informații, consultați. Căderi și Recompilarea obiectelor mari.
Rezoluția minimă necesară este ALTER nume_tabelă. Permisiunile implicite pentru declarația tabel trunchia aplică proprietarului de masă, membrii ai rolul de server sysadmin fixe, iar baza de date fixe și rolul db_owner db_ddladmin. Aceste permisiuni nu sunt transferate. Cu toate acestea, TRUNCATE TABLE instrucțiuni pot fi integrate într-un modul, cum ar fi o procedură stocată, și acordă permisiunile corespunzătoare pentru acest modul folosind Propozitia EXECUTE AS. Pentru mai multe informații, consultați., Consultați Utilizarea EXECUTE AS declarație pentru a crea seturi de permisiuni personalizate.