2012-11-15 9 views
7

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

+0

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. –

+0

Vergessen Sie nicht, dass ein "TRUNCATE" Ihre "aktuellen" Identitätswerte zurücksetzt, während sie bei der Zusammenführung beibehalten werden. –

Antwort

1

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 .

+0

Ich frage mich, ob MERGE anstelle von TRUNCATE und INSERT, nicht beide verwenden. Entschuldigung für die Verwirrung. –

+0

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

1

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 =)