Frage

Ich habe einige Tabellen, die ich als Teil meines Berichts Rollup bauen. Ich brauche sie nicht danach überhaupt. Jemand erwähnte, sich zu kürzen, da es schneller sein würde.

War es hilfreich?

Lösung

Datensätze aus einer Tabelle löschen protokolliert jede Löschung und führt gelöscht Auslöser für die Datensätze löschen. Kürzen ist ein mächtiger Befehl, der eine Tabelle leert, ohne jede anzumelden. SQL Server verhindert, dass Sie eine Tabelle mit Fremdschlüssel verweist es abgeschnitten wird, wegen der Notwendigkeit, die Fremdschlüssel in jeder Zeile zu überprüfen.

Kürzen ist normalerweise extrem schnell, ideal für Daten aus einer temporären Tabelle Reinigung aus. Es spielt die Erhaltung der Struktur der Tabelle für die zukünftige Verwendung.

Wenn Sie tatsächlich in der Tabelle entfernen möchten Definitionen sowie die Daten, einfach die Tabellen löschen.

Siehe in diesem MSDN-Artikel für weitere Informationen

Andere Tipps

DROP TABLE löscht die Tabelle.

TRUNCATE TABLE leert es, lässt aber seine Struktur für zukünftige Daten.

DROP und TRUNC verschiedene Dinge tun:

TRUNCATE TABLE

  

Entfernt alle Zeilen aus einer Tabelle ohne   Protokollierung der einzelnen Zeilen Löschungen.   TRUNCATE TABLE ist ähnlich wie die   DELETE-Anweisung ohne WHERE-Klausel;   jedoch TRUNCATE TABLE ist schneller und   verwendet weniger System- und Transaktionsprotokoll   Ressourcen.

DROP TABLE

  

Entfernt eine oder mehr Tabellendefinitionen   und alle Daten, Indizes, Trigger,   Einschränkungen und Erlaubnis   Spezifikationen für diese Tabellen.

Was Geschwindigkeit der Unterschied sollte klein sein betroffen ist. Und wie auch immer, wenn Sie überhaupt die Tabellenstruktur nicht benötigen, sicher DROP verwenden.

Ich glaube, Sie bedeutet den Unterschied zwischen DELETE TABLE und TRUNCATE TABLE.

DROP TABLE

  

entfernen Sie die Tabelle aus der Datenbank.

Tabelle löschen

  

ohne Bedingung alle Zeilen löschen. Wenn es Trigger und Referenzen, dann wird dies für jede Zeile verarbeiten. Auch wird ein Index ändern, wenn es ein.

TRUNCATE TABLE

  

stellen Sie die Zeilenanzahl Null und ohne jede anzumelden. Dass es viel schneller als die anderen beiden.

Keine dieser Antwort darauf einen wichtigen Unterschied zu diesen beiden Operationen aus. Drop-Tabelle ist ein Vorgang, der rückgängig gemacht werden kann. Allerdings kann truncate nicht rückgängig gemacht werden [ 'TRUNCATE TABLE kann auch zurück gerollt werden]. Auf dieser Art und Weise einen sehr großen Tisch fallen kann sehr teuer werden, wenn es viele Reihen, weil sie alle in einem temporären Raum aufgezeichnet werden müssen, falls Sie sich entscheiden, sie wieder zu rollen.

Normalerweise, wenn ich loswerden einen großen Tisch zu bekommen, werde ich es abschneiden, dann fallen lassen. Auf diese Weise werden die Daten ohne Aufzeichnung nixed werden, und die Tabelle gelöscht werden kann, und dass Tropfen wird sehr kostengünstig, da keine Daten aufgezeichnet werden muss.

Es ist wichtig, darauf hinzuweisen, obwohl das truncate nur Daten löscht, den Tisch verlassen, während Tropfen wird in der Tat, die Daten löschen und die Tabelle selbst. (Unter der Annahme, Fremdschlüssel nicht ausschließen, eine solche Aktion)

TRUNCATE TABLE hält alle Ihre alten Indizierung und so weiter. DROP TABLE würde offensichtlich loswerden den Tisch und verlangen, dass Sie es später neu zu erstellen.

DROP Table

DROP TABLE [table_name];
  

Der DROP-Befehl wird verwendet, um eine Tabelle aus der Datenbank zu entfernen. Es ist ein DDL-Befehl. Alle Zeilen, Indizes und Privilegien der Tabelle werden ebenfalls entfernt. DROP Vorgang kann nicht mehr rückgängig gemacht werden.

DELETE Tabelle

DELETE FROM [table_name]
WHERE [condition];

DELETE FROM [table_name];
  

Der DELETE-Befehl ist ein DML-Befehl. Es kann verwendet werden, um alle Zeilen zu löschen oder einige Zeilen aus der Tabelle unter der Bedingung in WHERE-Klausel angegeben basiert. Es wird ausgeführt, eine Zeilensperre verwendet wird, jede Zeile in der Tabelle ist zum Löschen gesperrt. Es hält das Transaktionsprotokoll, so ist es langsamer als TRUNCATE.   DELETE-Operationen werden kann rückgängig gemacht.

TRUNCATE Tabelle

TRUNCATE TABLE [table_name];
  

Der TRUNCATE Befehl löscht alle Zeilen aus einer Tabelle. Es wird die Streichung jeder Zeile nicht anmelden, sondern protokolliert er die Aufhebung der Zuordnung der Datenseiten der Tabelle, die es schneller als DELETE macht. Es wird mit einer Tabellensperre ausgeführt und ganz Tabelle gesperrt ist für alle Datensätze zu entfernen. Es ist ein DDL-Befehl. TRUNCATE-Operationen können nicht rückgängig gemacht werden.

Drop wird komplett aus der Tabelle entfernen, sowie die Definition zu entfernen. Kürzen leert den Tisch, aber wird nicht von der Definition los zu werden.

die Tabelle Kürzen leert den Tisch. die Tabelle löschen löscht sie vollständig. Entweder man wird schnell, aber dropping es wahrscheinlich schneller wird (abhängig von Ihrem Datenbank-Engine).

Wenn Sie es nicht mehr benötigen, lassen Sie sie es so nicht Ihr Schema unübersichtlich.

DELETE TableA statt TRUNCATE TableA? Ein verbreiteter Irrtum ist, dass sie das gleiche tun. Nicht damit. In der Tat gibt es viele Unterschiede zwischen den beiden.

DELETE ist eine protokollierte Operation auf einer Pro-Reihe-Basis. Das heisst dass das Löschen jeder Zeile wird protokolliert und physikalisch gelöscht.

Sie können jede Zeile löschen, die nicht eine Einschränkung verletzen, während die Fremdschlüssel oder andere contraint anstelle verlassen.

TRUNCATE ist auch eine protokollierte Operation, aber in einer anderen Art und Weise. TRUNCATE protokolliert die Aufhebung der Zuordnung der Datenseiten in dem die Daten existiert. Die Aufhebung der Zuordnung von Datenseiten bedeutet, dass Ihre Daten Zeilen existieren tatsächlich noch in den Datenseiten, aber die Ausdehnungen wurden als leer zur Wiederverwendung gekennzeichnet. Das ist was macht TRUNCATE eine schnellere Operation DELETE auszuführen über.

Sie können keine Tabelle TRUNCATE, die jeden Fremdschlüssel hat Einschränkungen. Sie werden die contraints entfernen müssen, Kürzen Sie die Tisch, und die contraints erneut anwenden.

TRUNCATE wird zurückgesetzt keine Identitätsspalten auf das Standardsaatgut Wert.

truncate entfernt all Zeilen, aber nicht die Tabelle selbst, es ist im Wesentlichen gleichwertig mit keiner where-Klausel zu löschen, aber in der Regel schneller.

Ich habe eine Korrektur für einen der oben getroffenen Aussagen ... „truncate nicht rückgängig gemacht werden kann“

Kürzen kann rückgängig gemacht werden. Es gibt einige Fälle, in denen Sie keine truncate oder Drop-Tabelle tun, wie zum Beispiel, wenn Sie eine Fremdschlüssel-Referenz haben. Für eine Aufgabe wie die monatliche Berichterstattung, würde ich wahrscheinlich fallen nur die Tabelle, wenn ich es nicht mehr benötigen. Wenn ich dieses Rollup tat mehr berichten oft, dann würde ich wahrscheinlich die Tabelle halten statt und truncate verwenden.

Hope, das hilft, hier einige weitere Informationen, die Ihnen nützlich sollten ...

Bitte beachten Sie die folgenden Artikel für weitere Informationen: http://sqlblog.com/blogs/denis_gobo/archive/ 2007/06/13 / 1458.aspx

Auch für weitere Details zu löschen vs. truncate finden Sie in diesem Artikel: http://www.sql-server-performance.com/faq/delete_truncate_difference_p1. aspx

Danke! Jeff

  

TRUNCATE TABLE ist funktionell   identische Aussage ohne DELETE   WHERE-Klausel: beide entfernen Sie alle Zeilen in   Der Tisch. Aber TRUNCATE TABLE ist   schneller und verbraucht weniger System und   Transaktionsprotokoll Ressourcen als DELETE.

     

Die DELETE-Anweisung entfernt Reihen   zu einem Zeitpunkt, und zeichnet einen Eintrag in der   Transaktionsprotokoll für jede Zeile gelöscht.   TRUNCATE TABLE löscht die Daten durch   Aufheben der Zuordnung der Datenseiten verwendet   speichert die Daten der Tabelle und nur die   Seite Aufheben dieser Zuordnungen sind in der aufgezeichneten   Transaktionsprotokoll.

     

TRUNCATE TABLE löscht alle Zeilen aus einer   Tisch, aber die Tabellenstruktur und ihre   Spalten, Einschränkungen, Indizes und so   eingeschaltet bleiben. Der Zähler um eine verwendeten   Identität für neue Zeilen wird wieder auf die   Saatgut für die Spalte. Wenn du möchtest   die Identität Zähler behalten, verwenden   DELETE statt. Wenn Sie möchten, entfernen   Tabellendefinition und ihre Daten, verwenden   DROP TABLE-Anweisung.

     

Sie können nicht TRUNCATE TABLE auf eine Verwendung   Tabelle durch einen Fremdschlüssel verwiesen   Zwang; Verwenden Sie stattdessen DELETE   Anweisung ohne eine WHERE-Klausel.   Da TRUNCATE TABLE ist nicht angemeldet,   es kann keinen Trigger aktivieren.

     

TRUNCATE TABLE nicht verwendet werden darf auf   Tabellen in einer indexierten Teilnahme   Ansicht.

http://msdn.microsoft.com /en-us/library/aa260621(SQL.80).aspx

In dem SQL-Standard entfernt DROP Tabelle die Tabelle und das Tabellenschema -. TRUNCATE alle Zeilen entfernt

Die Antworten hier passen auf die Frage, aber ich werde die Frage beantworten, die Sie nicht fragen. „Sollte ich gestutzt oder löschen?“ Wenn Sie alle Zeilen aus einer Tabelle entfernen möchte, sollten Sie in der Regel kürzen, da es viel viel schneller ist. Warum ist es viel schneller? Zumindest im Fall von Oracle, setzt sie die Hochwassermarke . Dies ist im Grunde ein dereferenzierenden der Daten und ermöglicht es dem db es für etwas wiederzuverwenden anderes.

DELETE VS TRUNCATE

  1. Die DELETE Anweisung entfernt Zeilen einen nach dem anderen und nimmt einen Eintrag in der Transaktion Protokoll für jeden gelöschten Zeile. TRUNCATE TABLE entfernt die Daten durch die Daten freigibt, Seiten verwendet, um die Tabellendaten zu speichern und speichert nur die Seite Zuordnungsaufhebungen in der Transaktionsprotokoll
  2. Wir können WHERE Klausel in DELETE verwenden, aber in TRUNCATE können Sie es nicht verwenden
  3. Wenn die DELETE Anweisung ausgeführt wird eine Zeilensperre verwendet wird, wird jede Zeile in der Tabelle gesperrt zum Löschen. TRUNCATE TABLE immer sperrt die Tabelle und Seite aber nicht jede Zeile
  4. Nach einer DELETE Anweisung ausgeführt wird, kann die Tabelle noch leer enthalten pages.If die Löschvorgang eine Tabellensperre, die Tabelle (Heap) viele enthält nicht leer verwenden Seiten. Bei Indizes kann der Löschvorgang leere Seiten hinter sich lassen, obwohl diese
    Seiten werden von einem Hintergrund-Cleanup-Prozess ausgeplant schnell werden
  5. TRUNCATE TABLE entfernt alle Zeilen aus einer Tabelle, aber die Tabellenstruktur und ihre Spalten, Einschränkungen, Indizes und bleiben so auf
  6. DELETE Anweisung RESEED nicht Identitätsspalte aber TRUNCATE Aussage RESEEDS die IDENTITY Spalte
  7. Sie können nicht TRUNCATE TABLE auf Tabellen verwenden, die:
    1. durch eine FOREIGN KEY Einschränkung verwiesen. (Sie können eine Tabelle gestutzt, die eine hat Fremdschlüssel, der auf sich selbst verweist.)
    2. in einer indizierten Sicht Teilnehmen.
    3. mithilfe von Transaktionsreplikation oder Mergereplikation
    4. veröffentlicht
  8. TRUNCATE TABLE können keinen Trigger aktivieren, da der Vorgang nicht einzelne anmeldet Zeilenlöschungen
  

Löschen Statement

Löschen Statement Tabellenzeilen löscht und gibt die Anzahl der Zeilen aus der table.in dieser Anweisung gelöscht wird, verwenden wir where-Klausel, um gelöschte Daten aus der Tabelle

  • Statement Löschen ist langsamer als Truncate Aussage, weil es Aufzeichnungen einzeln gelöscht
  

Kürzen Statement

Kürzen Anweisung gelöscht oder Entfernen Sie alle Zeilen aus der Tabelle.

  • Es ist schneller als die DELETE-Anweisung, weil es alle Datensätze aus der Tabelle gelöscht
  • Kürzen Anweisung nicht wieder die Anzahl der Zeilen aus der Tabelle gelöscht werden
  

Drop-Anweisung

Drop-Anweisung gelöscht alle Datensätze sowie die Struktur der Tabelle

  

DELETE

     

Der DELETE-Befehl wird verwendet, um Zeilen aus einer Tabelle zu entfernen. Eine WHERE-Klausel verwendet werden kann, entfernen nur einige Zeilen. Wenn keine WHERE-Bedingung angegeben ist, werden alle Zeilen entfernt. Nachdem ein Löschvorgang durchführen müssen Sie   COMMIT oder die Transaktion verbucht, um die Änderung dauerhaft zu machen oder sie rückgängig zu machen.

     

TRUNCATE

     

TRUNCATE entfernt alle Zeilen aus einer Tabelle. Der Vorgang kann nicht ... Als solche zurückgerollt werden, TRUCATE schneller ist und verwenden Sie nicht so viel rückgängig Raum als DELETE.

Von: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands

Drop Drop ganzen Tisch und all seine Struktur

truncate löschen Sie alle Zeilen aus der Tabelle es unterscheidet sich von löschen, dass es auch Indizes der Zeilen löschen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top