Batch-Löschoptimierung in SQL Server 2008
In SQL Server bieten Massenvorgänge wie Massenkopie (bcp) effiziente Techniken zur Datenbearbeitung. Es stellt sich jedoch die Frage nach der Verfügbarkeit einer ähnlichen Funktion zum Massenlöschen.
Abfrage:
Gibt es eine Lösung für das Massenlöschen in SQL Server?
TRUNCATE kann nicht zum selektiven Löschen verwendet werden, weshalb WHERE-Klauseln erforderlich sind. Gibt es eine Alternative zu bcp zum Massenlöschen von Daten?
Antwort:
Nein, SQL Server bietet keinen speziellen Massenlöschvorgang an. Es gibt jedoch mehrere Ansätze zur Optimierung von Batch-Löschungen:
Batch-Löschung mit @@ROWCOUNT:
SELECT 'Starting' --sets @@ROWCOUNT WHILE @@ROWCOUNT <> 0 DELETE TOP (xxx) MyTable WHERE ...
Diese Abfrage führt DELETE-Anweisungen in Batches von „xxx“ aus. Zeilen, bis keine Zeilen mehr übrig sind.
Abschneiden und Einfügen Methode:
SELECT col1, col2, ... INTO #Holdingtable FROM MyTable WHERE ..opposite condition.. TRUNCATE TABLE MyTable INSERT MyTable (col1, col2, ...) SELECT col1, col2, ... FROM #Holdingtable
Diese Technik ist effektiv, wenn ein hoher Prozentsatz der Zeilen gelöscht werden muss. Es erstellt eine temporäre Tabelle mit den beizubehaltenden Zeilen, schneidet die ursprüngliche Tabelle ab und fügt die beibehaltenen Zeilen wieder in die Tabelle ein.
Das obige ist der detaillierte Inhalt vonWie kann ich Batch-Löschvorgänge in SQL Server 2008 optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!