Ich vor kurzem auf MSSQL 2008 R2 aktualisiert und fragte mich, ob die "neue" Merge-Funktion war effizienter/schneller als Abschneiden und Einfügen für die Aktualisierung von Tabellen gegeben jeder Tabelle hat Millionen von Zeilen. Wenn jemand einige Daten ihrer Leistung zur Verfügung stellen könnte, wäre das großartig, aber jede Erklärung wäre hilfreich!MERGE vs TRUNCATE und INSERT
Antwort
Nicht sicher, dass ich Ihren Punkt TRUNCATE
und INSERT
richtig verstanden habe. Wenn nicht, dann kannst du mich korrigieren.
MERGE
ist als ein Mechanismus gemeint, um entweder eine UPDATE
zu einer bestehenden Zeile zu tun, oder, falls eine bestehende Zeile nicht gefunden wird, eine INSERT
.
Sie empfehlen TRUNCATE
und INSERT
, die die Verwendung von MERGE entfernen würde, da alles ein INSERT wäre. Ich habe keine Ahnung, ob ein MERGE
in diesem Fall schneller wäre oder nicht, weil ich es nie versucht habe, aber ich würde annehmen, dass der Teil der MERGE
, der bestimmt, ob ein UPDATE
oder INSERT
verwendet wird, etwas Overhead auferlegt .
Ich frage mich, ob MERGE anstelle von TRUNCATE und INSERT, nicht beide verwenden. Entschuldigung für die Verwirrung. –
Hallo Kevin. Vielleicht habe ich mich falsch formuliert. Wie bei tr3 habe ich auch angenommen, dass Sie versuchen, Daten von einer Tabelle in eine andere zu kopieren. Wenn dies der Fall ist, würde ich bei 'TRUNCATE' und' INSERT' bleiben, weil ich den Teil des 'MERGE' nehme, der überprüft, ob ein 'UPDATE' verwendet wird oder nicht. Wenn Sie nach einer einfachen Möglichkeit suchen, eine einzelne Tabelle zu klonen, können Sie versuchen, sich diese SO-Frage anzusehen: So erstellen Sie tägliche Snapshots einer Tabelle - http://stackoverflow.com/questions/8813808/how-to-take-daily-Schnappschüsse-von-einer-Tabelle – SchmitzIT
I verwendet MERGE
weil ich brauchte Datenänderungen (hielten eine Prüfsumme der Zeilen) zu verfolgen, aber da es, dass Sie benötigen scheint nur, dass Daten „geklont“ jedes Mal wenn ich verwenden MERGE
nicht ein besonderer Grund sehen, schließlich MERGE
macht eine Art von Prüfungen (es gibt eine Überprüfung der Primärschlüssel und zusätzliche Bedingungen werden auf alle WHEN
gesetzt); von TRUNCATE
und anschließend einer Masse INSERT
Sie sollen nicht alle haben, die
durch die Art und Weise Bedingungen Spiel nehmen dies nicht als 100% wahr, ich habe keinen Performance-Test als Beweis zu bringen; Ich schlage vor, dass Sie beide Operationen ausprobieren und sehen, welche mehr Zeit benötigt =)
- 1. INSERT UND TRUNCATE
- 2. Oracle MERGE INSERT nicht
- 3. INSERT vs INSERT INTO
- 4. MERGE vs. UPSERT
- 5. multi-wege merge vs 2-wege merge
- 6. Git - Merge vs Rebase
- 7. Leistung von INSERT vs INSERT/* + direct */
- 8. Conditional DELETE/INSERT/UPDATE in MERGE
- 9. merge vs findet Entitäten JPA
- 10. Pull-Anfrage vs Merge-Anfrage
- 11. bzr ziehen vs bzr Merge
- 12. So ersetzen Sie truncate-einfügen mit Merge-Klausel in pl/sql
- 13. Transaktion funktioniert nicht auf Truncate
- 14. jquery append truncate
- 15. Truncate mit Bedingung
- 16. MySQL truncate hängt
- 17. MySQL Rückgängig truncate Tabelle
- 18. QPlainTextEdit truncate Geschichte zeilenweise
- 19. Visual Studio 2015 Branch und Merge Problem mit. Vs-Ordner
- 20. How to truncate wp_rss
- 21. Mehrere OUTPUT-Klauseln in MERGE/INSERT/DELETE SQL-Befehle?
- 22. MERGE, UPDATE, INSERT T-SQL-Wert kann nicht NULL
- 23. PHP Merge 2 Bilder (Insert Gesicht, um ein Bild)
- 24. bc truncate Gleitkommazahl
- 25. jquery truncate plugin
- 26. Oracle Merge vs Wählen Sie dann Einfügen oder Aktualisieren
- 27. Git - Merge vs Rebase für meinen Workflow
- 28. WiX - VC++ Runtime - Vcredist vs Merge-Modul
- 29. Git Merge vs Rebase - Auflösung von Konflikten
- 30. R: data.table vs merge (aggregate()) Leistung
Es hängt davon ab, wie viele Zeilen Sie hinzufügen müssen. Es gibt wahrscheinlich einen Schwellenwert, bei dem die Ausführungszeit für "merge" und "truncate ... insert" gleich ist. –
Vergessen Sie nicht, dass ein "TRUNCATE" Ihre "aktuellen" Identitätswerte zurücksetzt, während sie bei der Zusammenführung beibehalten werden. –