So kürzen Sie ein Feld in SQL


Beste Antwort

Zunächst einmal: „Es ist nicht möglich, ein Feld abzuschneiden“.

Abschneiden ist a Konzept in der Datenbank, das nicht wie eine Löschanweisung oder ein Update ist. Das Hauptkonzept von Truncate ist, wie die Metadaten hinter den Kulissen behandelt werden. Wenn Sie mit Oracle arbeiten, können Sie ein Konzept namens „High Water Mark“ studieren. Sie finden es sehr detailliert in Burlesons Blog hier.

Auf SQL Server Wenn Sie an einen Primärschlüssel mit automatischem Inkrementierungswert denken, setzen Sie ihn auf die Basis. Ich meine den von Ihnen definierten Startwert oder den Standardwert 1. Grundsätzlich sind die Operationen im Back-End spezifischer für Metadaten und spezifischer für die Eigenschaften einer Datenbank auf Tabellenebene.

Nun, wenn Sie wollten bedeuten, dass Sie eine Spalte bereinigen möchten. Sie können einfach ein Update mit NULL für diese bestimmte Spalte auslösen oder mit aktualisieren.

Update TABLE

Set Column = NULL/’’

Where 1 =1

Ich habe dies zuletzt erwähnt, wo Klausel, weil heutzutage viele Datenbanken es Ihnen nicht erlauben, die gesamte Spalte ohne eine where-Klausel zu aktualisieren. In mySql wurde es als „Safe Update Flag“ bezeichnet. Um genauer zu sein, aktualisieren Sie immer mit NULL anstelle von „“, um eine bewährte Methode zu befolgen.

Antwort

LÖSCHEN ist eine protokollierte Operation für eine Zeile. Dies bedeutet, dass das Löschen jeder Zeile physisch aufgezeichnet und entfernt wird. Sie können jede Zeile löschen, die keine Verletzung der Einschränkung darstellt, während Sie den Fremdschlüssel oder andere Einschränkungen beibehalten.

TRUNCATE ist eine protokollierte Operation, jedoch auf andere Weise. TRUNCATE protokolliert den Geschäftsstandort von Informationsseiten, auf denen Informationen vorhanden sind. Die Freigabe von Informationsseiten bedeutet, dass Ihre Informationszeilen tatsächlich noch auf den Informationsseiten vorhanden sind, die Erweiterungen jedoch zur Wiederverwendung als leer markiert sind. Dies macht TRUNCATE zu einer schnelleren Operation, die über DELETE ausgeführt werden kann. Eine Tabelle mit Fremdschlüsseleinschränkungen kann nicht abgeschnitten werden. Sie müssen die Einschränkungen entfernen, die Tabelle abschneiden und die Einschränkungen erneut anwenden.

TRUNCATE setzt alle Identitätsspalten auf die Standardwertinitialisierung zurück. Dies bedeutet, dass wenn Sie eine Tabelle mit einer Identitätsspalte und 264 Zeilen mit einem Startwert von 1 haben, sein letzter Datensatz den Wert 264 (vorausgesetzt, Sie haben mit Wert 1 begonnen) in den Spalten Ihrer Identität hat. Nach dem Abschneiden Ihrer Tabelle beim Einfügen eines neuen Datensatzes in die leere Tabelle hat die Identitätsspalte den Wert 1. LÖSCHEN wird nicht. Im selben Szenario wird bei der aktuellen Zeile eine neue Zeile in die leere Tabelle eingefügt Die Identitätsspalte hat den Wert 265.

Warum ist Abschneiden schneller als Löschen?

Grund: In Das Schreiben zum Löschen aller Informationen wird in den Rollback-Tabellenbereich kopiert und anschließend der Löschvorgang ausgeführt. Wenn Sie also nach dem Löschen einer Tabelle ROLLBACK eingeben, können Sie die Informationen zurückerhalten (die Methode ermittelt sie für das Tempo der Rollback-Tabellen) Die Technik wird einige Zeit in Anspruch nehmen, aber bei Verwendung von TRUNCATE werden Informationen direkt entfernt, ohne sie in den Rollback-Tabellenbereich zu kopieren. TRUNCATE ist also schneller. Zweimal abgeschnitten können Sie die Informationen nicht zurückerhalten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.