sql >> Database >  >> RDS >> Sqlserver

Voors en tegens van TRUNCATE versus VERWIJDEREN VAN

TRUNCATE genereert geen terugdraaigegevens, waardoor het razendsnel is. Het maakt de toewijzing van de gegevenspagina's die door de tabel worden gebruikt alleen ongedaan.

Als u zich echter in een transactie bevindt en de mogelijkheid wilt hebben om deze verwijdering ongedaan te maken, moet u DELETE FROM gebruiken , wat de mogelijkheid geeft om terug te draaien.

BEWERKEN: Merk op dat het bovenstaande niet klopt voor SQL Server (maar wel van toepassing is op Oracle). In SQL Server is het mogelijk om een ​​truncate-bewerking terug te draaien als u zich in een transactie bevindt en de transactie niet is vastgelegd. Vanuit het perspectief van SQL Server is een belangrijk verschil tussen DELETE FROM en TRUNCATE dit :"De DELETE-instructie verwijdert rijen één voor één en registreert een vermelding in het transactielogboek voor elke verwijderde rij. TRUNCATE TABLE verwijdert de gegevens door de gegevenspagina's die worden gebruikt om de tabelgegevens op te slaan ongedaan te maken en registreert alleen de paginadeallocaties in het transactielogboek ."

Met andere woorden, er is minder logging tijdens een TRUNCATE omdat alleen de paginadeallocaties worden vastgelegd in het transactielogboek, terwijl met een DELETE FROM elke rij wordt verwijderd. Dat is een van de redenen waarom TRUNCATE razendsnel is.

Merk ook op via die MSDN-link dat u geen tabellen kunt afkappen waarnaar wordt verwezen door externe-sleutelbeperkingen, niet kunt deelnemen aan een geïndexeerde weergave of die zijn gepubliceerd met behulp van transactionele replicatie of samenvoegreplicatie.

BEWERK 2: Een ander belangrijk punt is dat TRUNCATE TABLE je identiteit terugzet naar de oorspronkelijke seed, terwijl DELETE FROM verder gaat waar het was gebleven. Referentie:het antwoord van Ben Robinson.



  1. Zoekopdracht optimaliseren met OFFSET op grote tafel

  2. Verschil tussen PDO->query() en PDO->exec()

  3. mysql - retourneer de eerste kolom eenmaal en alle bijbehorende kolomgegevens

  4. Gegevens uit de database weergeven in DropDownList in asp.net MVC3