FALL vs Mehrere UPDATE-Abfragen für große Datenmengen - Leistung

Für die Leistung, welche option wäre besser für große Datensätze, die aktualisiert werden sollen?

Mithilfe einer CASE-Anweisung oder Einzelne update-Abfragen?

Beispiel:

UPDATE tbl_name SET field_name = 
CASE
    WHEN condition_1 THEN 'Blah'
    WHEN condition_2 THEN 'Foo'
    WHEN condition_x THEN 123
    ELSE 'bar'
END AS value

Einzelne Abfrage Beispiel:

UPDATE tbl_name SET field_name = 'Blah' WHERE field_name = condition_1
UPDATE tbl_name SET field_name = 'Foo' WHERE field_name = condition_2
UPDATE tbl_name SET field_name = 123 WHERE field_name = condition_x
UPDATE tbl_name SET field_name = 'bar' WHERE field_name = condition_y

HINWEIS: Über 300.000 Datensätze werden aktualisiert, und die CASE-Anweisung hätte über die 10.000, WENN sich die Verhältnisse. Wenn Sie mit den einzelnen Abfragen, die etwa 10.000 sowie

  • "Wenn mit den einzelnen Abfragen, die etwa 10.000 als gut" - vielleicht ein gemeinsames temp-Tabelle wäre eine bessere Idee....
  • +1 Mitch...habe nicht bemerkt, den Anwendungsbereich, wenn ich schrieb meine Antwort. Im Prinzip CASE wird effizienter sein, aber vielleicht nicht in dieser Größenordnung.
  • Interessant, hätte ich nicht gedacht von diesem Ansatz, Danke
  • Bei Verwendung der option 2, die Sie haben zu stellen Sie sicher, dass Sie alles in einer Transaktion (kein autocommit!) - in diesem Fall bin ich geneigt zu glauben, dass gibt es keinen großen Unterschied zwischen den beiden vor allem, wenn field_name indiziert ist. Aber Sie wird haben um für sich selbst ausprobieren. Es ist mehr oder weniger unmöglich, um Ihnen eine korrekte Antwort ohne Zugriff auf Ihr system.
Schreibe einen Kommentar