Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Löschen großer Datenmengen aus SQL Server 2008

Ihre Frage ist ziemlich vage, aber ich denke, Sie sagen Folgendes:

  • Ich kann Daten in meine Datenbank einfügen
  • Das AKTUALISIEREN meiner Daten sieht schwierig aus, daher würde ich es vorziehen, einfach zu LÖSCHEN und dann wieder EINZUFÜGEN (weil ich diesen Code bereits geschrieben habe)

Ich würde sagen, dass dies aus den folgenden Gründen (und zweifellos aus vielen weiteren) eine schlechte Idee ist:

  • Auch wenn Sie nur LÖSCHEN, müssen Sie immer noch die richtigen zu löschenden Zeilen identifizieren, aus Tabellen in der richtigen Reihenfolge löschen usw. Es ist also unwahrscheinlich, dass Sie viel Zeit sparen werden
  • Sie werden der Anwendung unnötige Komplexität und zusätzlichen Wartungsaufwand hinzufügen:Transaktionsabwicklung, zusätzlicher zu wartender Code, Berechtigungsänderungen usw.
  • Das Hinzufügen von serverseitiger Logik zur Datenbank in Form von Triggern und/oder Prozeduren wird schwieriger, da ein DELETE nicht mehr unbedingt DELETE bedeutet, sondern möglicherweise den Beginn eines UPDATE bedeutet (ich meine logischerweise nicht physisch) und das ist sehr mühsam zu warten und kann Code, Traces oder Audits beschädigen, die auf DML-Aktionen oder -Ereignissen basieren
  • Die Datenbank muss mehr protokollieren, weil Sie eine Operation in zwei geteilt haben

Vielleicht haben Sie gute Gründe, ein UPDATE zu vermeiden, aber "es ist schwer zu schreiben" sollte keiner davon sein (Entschuldigung, wenn ich Ihre Situation zu sehr vereinfache).

Sie erhalten möglicherweise eine nützlichere Antwort, wenn Sie genau erklären, was "schwierig" ist, etwas Hintergrund darüber geben, was eine "große Datenmenge" bedeutet, einige Tabellenstrukturen und Code zeigen, die Ihre Schwierigkeiten veranschaulichen usw.