Heim >Datenbank >MySQL-Tutorial >Gibt es eine schnellere Alternative zu Standard-DELETE-Anweisungen für das Massenlöschen in SQL Server 2008?
Effizientes Massenlöschen in SQL Server 2008
Bei der Datenbankverwaltung besteht häufig die Notwendigkeit einer effizienten Datenlöschung. Obwohl SQL Server standardmäßige DELETE-Anweisungen bereitstellt, können diese bei großen Datensätzen zeitaufwändig sein. Bei dieser Frage wird untersucht, ob SQL Server eine Alternative zu Bulk Copy (bcp) für Massen-DELETE-Vorgänge bietet.
TRUNCATE kann nicht verwendet werden, stattdessen WHERE verwenden
Die vorgestellte Abfrage fragt, ob es eine Lösung für Massen-LÖSCHEN in SQL Server gibt. Der Haken ist, dass das Löschen durch eine WHERE-Klausel begrenzt werden sollte, was TRUNCATE zu einer ungeeigneten Option macht.
Kein Massenkopie-Äquivalent für DELETE
Leider gibt es keine Massenkopie Kopieräquivalent für DELETE-Vorgänge in SQL Server. DELETE-Anweisungen mit WHERE-Klauseln müssen als Standard-SQL-Abfragen ausgeführt werden.
Batch-DELETEs für Skalierbarkeit
Bei großen Datensätzen sollten Sie Batch-DELETE-Vorgänge in Betracht ziehen. Dazu gehört das Aufteilen der DELETE-Anweisung in kleinere Stapel, wie unten gezeigt:
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
Alternative Methode für hochprozentige Löschungen
Beim Löschen einer großen Mehrheit von Zeilen Eine alternative Methode könnte effizienter sein:
SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
Das obige ist der detaillierte Inhalt vonGibt es eine schnellere Alternative zu Standard-DELETE-Anweisungen für das Massenlöschen in SQL Server 2008?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!