Detaillierte Erklärung der Truncate-Verwendung in MySQL

Detaillierte Erklärung der Truncate-Verwendung in MySQL

Anleitung in diesem Artikel: Es gibt zwei Möglichkeiten, Daten in einer Tabelle zu löschen: Löschen und Abschneiden. TRUNCATE TABLE wird verwendet, um alle Zeilen in einer Tabelle zu löschen, ohne das Löschen einer einzelnen Zeile aufzuzeichnen. TRUNCATE TABLE ähnelt einer DELETE-Anweisung ohne WHERE-Klausel; TRUNCATE TABLE ist jedoch schneller und verwendet weniger System- und Transaktionsprotokollressourcen. Im Folgenden wird die Verwendung von Truncate in SQL beschrieben.

Wenn Sie die Tabelle nicht mehr benötigen, verwenden Sie „drop“. Wenn Sie die Tabelle behalten, aber alle Datensätze löschen möchten, verwenden Sie „truncate“. Wenn Sie einige Datensätze löschen möchten (immer mit einer WHERE-Klausel), verwenden Sie „delete“.

Truncate ist eine SQL-Syntax, mit der alle Daten in einer Tabelle schnell gelöscht werden können. Außerdem kann die Anzahl auf Null zurückgesetzt und Felder mit automatisch erhöhten Werten neu berechnet werden.

1. Truncate-Syntax

[ { Datenbankname.[ Schemaname ]. | Schemaname . } ]
  Tabellenname
[ ; ]

Parameter

Datenbankname
Der Name der Datenbank.

Schemaname
Der Name des Schemas, zu dem die Tabelle gehört.

Tabellenname
Der Name der Tabelle, die gekürzt werden soll, oder der Name der Tabelle, deren Zeilen gelöscht werden sollen.

2. Vorsichtsmaßnahmen bei der Verwendung von Truncate

1. TRUNCATE TABLE ist funktional identisch mit einer DELETE-Anweisung ohne WHERE-Klausel: beide löschen alle Zeilen in einer Tabelle. TRUNCATE TABLE ist jedoch schneller als DELETE und verwendet weniger System- und Transaktionsprotokollressourcen.

2. Die DELETE-Anweisung löscht jeweils eine Zeile und zeichnet für jede gelöschte Zeile einen Eintrag im Transaktionsprotokoll auf. TRUNCATE TABLE entfernt Daten, indem es die zum Speichern der Tabellendaten verwendeten Datenseiten freigibt, und zeichnet nur die Freigabe der Seiten im Transaktionsprotokoll auf.

3. TRUNCATE TABLE löscht alle Zeilen in der Tabelle, aber die Tabellenstruktur und ihre Spalten, Einschränkungen, Indizes usw. bleiben unverändert. Der zum Identifizieren neuer Zeilen verwendete Zählwert wird auf den Startwert für die Spalte zurückgesetzt. Wenn Sie den Identitätszählerwert beibehalten möchten, verwenden Sie stattdessen DELETE. Wenn Sie eine Tabellendefinition und ihre Daten löschen möchten, verwenden Sie die Anweisung DROP TABLE.

4. Für Tabellen, auf die durch FOREIGN KEY-Einschränkungen verwiesen wird, kann TRUNCATE TABLE nicht verwendet werden. Stattdessen sollte eine DELETE-Anweisung ohne WHERE-Klausel verwendet werden. Da TRUNCATE TABLE nicht protokolliert wird, kann es keine Trigger aktivieren.

5. TRUNCATE TABLE kann nicht für Tabellen verwendet werden, die an indizierten Ansichten teilnehmen.

6. Wenn Sie Daten zu einer Tabelle hinzufügen, die mit TRUNCATE TABLE gelöscht wurde, verwenden Sie UPDATE STATISTICS, um die Indexinformationen beizubehalten.

7. Wenn eine ROLLBACK-Anweisung vorhanden ist, wird der DELETE-Vorgang rückgängig gemacht, der TRUNCATE-Vorgang jedoch nicht.

3. TRUNCATE TABLE kann nicht auf die folgenden Tabellen angewendet werden

1. Tabellen, auf die durch FOREIGN KEY-Einschränkungen verwiesen wird. (Sie können eine Tabelle abschneiden, die einen Fremdschlüssel hat, der auf sich selbst verweist.)

2. An der Indexansicht teilnehmende Tabellen.

3. Mithilfe einer Transaktionsreplikation oder einer Mergereplikation veröffentlichte Tabellen.

4. Verwenden Sie für Tabellen mit einer oder mehreren der oben genannten Eigenschaften die DELETE-Anweisung.

5. TRUNCATE TABLE kann keine Trigger aktivieren, da der Vorgang das Löschen einzelner Zeilen nicht aufzeichnet.

IV. Unterschiede zwischen TRUNCATE, Drop und Delete

1. Drop und Delete löschen nur die Daten (Definition) der Tabelle. Die Drop-Anweisung löscht die Tabellenstruktur, abhängige Einschränkungen, Trigger und Indizes; die gespeicherten Prozeduren/Funktionen, die von der Tabelle abhängen, bleiben erhalten, werden aber ungültig.
2. Die Löschanweisung ist eine DML-Sprache. Dieser Vorgang wird im Rollback-Segment platziert und wird erst wirksam, nachdem die Transaktion festgeschrieben wurde. Wenn ein entsprechender Trigger vorhanden ist, wird er bei der Ausführung ausgelöst. Truncate und Drop sind DDL-Sprachen. Sie werden unmittelbar nach der Operation wirksam. Die Originaldaten werden nicht in das Rollback übernommen und können nicht zurückgesetzt werden. Die Operation löst den Trigger nicht aus.

3. Die Löschanweisung hat keinen Einfluss auf den von der Tabelle belegten Umfang und die Hochwassermarke verbleibt an ihrer ursprünglichen Position. Die Drop-Anweisung gibt den gesamten von der Tabelle belegten Speicherplatz frei. Standardmäßig gibt die Truncate-Anweisung Speicherplatz im Umfang von Minextents frei, sofern kein wiederverwendeter Speicher verwendet wird. Durch Abschneiden wird die Hochwassermarke zurückgesetzt (zurück zum Anfang).

4. Effizienz: löschen > abschneiden > löschen

5. Sicherheit: Verwenden Sie „Drop“ und „Truncate“ mit Vorsicht, insbesondere wenn kein Backup vorhanden ist. Wenn Sie einige Daten löschen möchten, können Sie „Delete“ mit einer Where-Klausel verwenden und das Rollback-Segment muss groß genug sein. Wenn Sie eine Tabelle löschen möchten, können Sie „Drop“ verwenden. Wenn Sie die Tabelle behalten, aber nur alle Daten in der Tabelle löschen möchten, können Sie „Truncate“ verwenden, wenn es nicht mit der Transaktion zusammenhängt. Wenn es mit der Transaktion zusammenhängt oder Sie einen Trigger auslösen möchten, verwenden Sie trotzdem „Delete“. Wenn Sie die Fragmente innerhalb der Tabelle aussortieren möchten, können Sie „Truncate“ verwenden, gefolgt von „Reuse Storage“ und dann die Daten erneut importieren und einfügen.

6.delete ist eine DML-Anweisung und wird nicht automatisch übermittelt. Drop/Truncate sind beides DDL-Anweisungen und werden nach der Ausführung automatisch festgeschrieben.

7. „Drop“ wird im Allgemeinen zum Löschen allgemeiner Daten wie Tabellen, Schemata, Indizes, Ansichten, Integritätsbeschränkungen usw. verwendet; „Delete“ wird zum Löschen lokaler Daten wie eines Tupels in einer Tabelle verwendet.

8. DROP löscht die Tabellenstruktur; DELETE löscht nur die Daten

9. Wenn Sie die Tabelle nicht mehr benötigen, verwenden Sie „drop“. Wenn Sie die Tabelle behalten, aber alle Datensätze löschen möchten, verwenden Sie „truncate“. Wenn Sie einige Datensätze löschen möchten (immer mit einer WHERE-Klausel), verwenden Sie „delete“.

Dies ist das Ende dieses Artikels über die detaillierte Verwendung von Truncate in MYSQL. Weitere relevante Inhalte zu MYSQL Truncate finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der MySQL Truncate-Verwendung
  • Detaillierte Erklärung der Truncate-Verwendung in MySQL

<<:  Tutorial zur HTML-Tabellenauszeichnung (48): CSS-modifizierte Tabelle

>>:  Wird der veraltete Docker durch Podman ersetzt?

Artikel empfehlen

CSS3-Filtercode zum Erreichen des Grau- oder Schwarzmodus auf Webseiten

Frontend css3.filter kann nicht nur den Graueffek...

Vue3 kapselt seine eigene Paging-Komponente

In diesem Artikelbeispiel wird der spezifische Co...

WeChat-Applet + ECharts zur Realisierung eines dynamischen Aktualisierungsprozesses

Vorwort Kürzlich stieß ich auf eine Anforderung, ...

Eine kurze Diskussion zum Problem des Docker-Run-Containers im erstellten Status

Bei einem aktuellen Problem gibt es folgendes Phä...

Ein einfaches Tutorial zur Verwendung des MySQL-Protokollsystems

Inhaltsverzeichnis Vorwort 1. Fehlerprotokoll 2. ...

Beispiele für die Verwendung temporärer Tabellen in MySQL

Ich war in den letzten beiden Tagen etwas beschäf...

Detaillierte Schritte zum Konfigurieren des Tomcat-Servers in IDEA 2020

Die Schritte zum Konfigurieren von Tomcat in IDEA...

So behandeln Sie den vom Linux-System gemeldeten Fehler tcp_mark_head_lost

Problembeschreibung Kürzlich meldete ein Host die...

Docker erstellt MySQL-Erklärung

1. MySQL-Image herunterladen Befehl: docker pull ...

Beste Möglichkeit, den Schlüssel im JSON-Objekt zu ersetzen

JSON (JavaScript Object Notation, JS Object Notat...

Implementierungsschritte für die Paketierung und Optimierung von Vue-Projekten

Inhaltsverzeichnis Verpacken, Starten und Optimie...