Vraag Verschil tussen de neerzettafel en de afkappingstabel?


Ik heb een aantal tabellen die ik maak als onderdeel van mijn rapportrollup. Ik heb ze achteraf helemaal niet nodig. Iemand die genoemd wordt om ze af te korten omdat het sneller zou zijn.


61
2017-09-25 20:02


oorsprong


antwoorden:


Het verwijderen van records uit een tabel registreert elke verwijdering en voert delete-triggers uit voor de verwijderde records. Truncate is een krachtigere opdracht die een tabel leegt zonder elke rij te loggen. SQL Server voorkomt dat u een tabel afknipt met externe sleutels die ernaar verwijzen, vanwege de noodzaak om de externe sleutels in elke rij te controleren.

Truncate is normaal gesproken ultrasnelle, ideaal voor het opschonen van gegevens uit een tijdelijke tabel. Het behoudt de structuur van de tabel voor toekomstig gebruik.

Als u de tabel werkelijk wilt verwijderen definities evenals de gegevens, laat gewoon de tabellen vallen.

Zien dit MSDN-artikel voor meer informatie


82
2017-09-25 20:07



DROP TABLE verwijdert de tabel.

TRUNCATE TABLE maakt het leeg, maar laat structuur over voor toekomstige gegevens.


68
2017-09-25 20:03



DROP en TRUNC doen verschillende dingen:

AFHANDELINGSTAFEL

Verwijder alle rijen uit een tabel zonder   het loggen van de afzonderlijke rijverwijderingen.   TRUNCATE TABLE is vergelijkbaar met de   DELETE-verklaring zonder WHERE-clausule;   TRUNCATE TABLE is echter sneller en   gebruikt minder systeem- en transactielogboeken   middelen.

SLIJPSTABEL

Verwijdert een of meer tabeldefinities   en alle gegevens, indexen, triggers,   beperkingen en toestemming   specificaties voor die tabellen.

Wat snelheid betreft, zou het verschil klein moeten zijn. En hoe dan ook, als je de tafelstructuur helemaal niet nodig hebt, gebruik dan zeker DROP.


21
2017-09-25 20:10



Ik denk dat je het verschil bedoelt tussen VERWIJDER TAFEL en AFBREKENDE TAFEL.

SLIJPSTABEL 

verwijder de tabel uit de database.

TABEL WISSEN 

verwijder zonder voorwaarde alle rijen. Als er trigger en referenties zijn, wordt deze voor elke rij verwerkt. Ook een index zal worden aangepast als daar een is.

AFHANDELINGSTAFEL 

stel de rijtelling nul in en zonder elke rij te loggen. Dat het veel sneller is dan het andere allebei.


18
2017-09-25 20:06



Geen van deze antwoorden wijst op een belangrijk verschil over deze twee operaties. De vervolgkeuzelijst is een bewerking die kan worden teruggedraaid. Truncate kan echter niet worden teruggedraaid ['AFBREUKTAFEL' kan ook worden teruggedraaid]. Op deze manier kan het erg duur zijn om een ​​zeer grote tafel te laten vallen als er veel rijen zijn, omdat ze allemaal in een tijdelijke ruimte moeten worden opgenomen in het geval u besluit deze terug te rollen.

Meestal, als ik een grote tafel wil kwijtraken, zal ik die inkorten en dan laten vallen. Op deze manier worden de gegevens zonder registratie geweerd en kan de tabel worden verwijderd en die daling is erg goedkoop omdat er geen gegevens hoeven te worden vastgelegd.

Het is echter belangrijk om erop te wijzen dat truncate alleen gegevens verwijdert, de tabel verlaat, terwijl drop in feite de gegevens en de tabel zelf verwijdert. (ervan uitgaande dat buitenlandse sleutels een dergelijke actie niet uitsluiten)


9
2017-09-25 20:16



TRUNCATE TABLE behoudt al uw oude indexering en wat al niet. DROP TABLE zou natuurlijk van de tafel af geraken en vereisen dat je het later opnieuw creëert.


4
2017-09-25 20:04



Drop haalt de tafel volledig weg en verwijdert ook de definitie. Truncate maakt de tafel leeg maar raakt niet van de definitie af.


3
2017-09-25 20:04



Het afkorten van de tafel maakt de tafel leeg. Als u de tabel laat vallen, wordt deze volledig verwijderd. Het ene is snel, maar het valt waarschijnlijk sneller (afhankelijk van je database-engine).

Als je het niet meer nodig hebt, laat het dan vallen, zodat je schema er niet door opraakt.


3
2017-09-25 20:04



Tabel A VERWIJDEREN in plaats van TRUNCATE Tabel A? Een veel voorkomende misvatting is dat ze hetzelfde doen. Niet zo. In feite zijn er veel verschillen tussen de twee.

DELETE is een gelogde bewerking op basis van een rij. Dit betekent dat het verwijderen van elke rij wordt vastgelegd en fysiek wordt verwijderd.

U kunt elke rij verwijderen die een beperking niet schendt, terwijl de externe sleutel of een andere contraint op zijn plaats wordt gelaten.

TRUNCATE is ook een gelogde operatie, maar op een andere manier. TRUNCATE logt de deallocatie van de gegevenspagina's waarin de gegevens zich bevinden bestaat. Het deallocatie van gegevenspagina's betekent dat uw gegevens rijen bestaan ​​nog steeds in de gegevenspagina's, maar de de uitbreidingen zijn gemarkeerd als leeg voor hergebruik. Dit is wat maakt TRUNCATE een snellere bewerking om meer dan DELETE uit te voeren.

U kunt een tabel die een externe sleutel bevat NIET TRULLEN beperkingen. U zult de tegenvalligheden moeten verwijderen, TRUNCATE de tabel en pas de debiteuren opnieuw toe.

TRUNCATE zal elke identiteitskolom resetten naar de standaard seed waarde.


3
2017-10-05 19:58



truncate verwijdert alle rijen, maar niet de tabel zelf, het is in wezen equivalent aan het verwijderen van de where-clausule, maar meestal sneller.


2
2017-09-25 20:04



Ik heb een correctie voor een van de bovenstaande verklaringen ... "afkappen kan niet worden teruggedraaid"

Truncate kan worden teruggedraaid. Er zijn enkele gevallen waarin u geen truncate of drop-tabel kunt uitvoeren, bijvoorbeeld wanneer u een verwijzing naar een vreemde sleutel gebruikt. Voor een taak als maandelijkse rapportage zou ik waarschijnlijk de tafel gewoon laten vallen als ik hem niet meer nodig had. Als ik dit samenvoegrapport vaker zou doen, zou ik waarschijnlijk de tabel behouden en afkapping gebruiken.

Ik hoop dat dit helpt, hier is wat meer informatie die je nuttig zou kunnen vinden ...

Zie het volgende artikel voor meer informatie: http://sqlblog.com/blogs/denis_gobo/archive/2007/06/13/1458.aspx

Zie ook dit artikel voor meer informatie over verwijderen versus afkappen: http://www.sql-server-performance.com/faq/delete_truncate_difference_p1.aspx

Bedankt! Jeff


2
2017-09-25 20:59