Ich erwarte keine Leistungsprobleme vom CASE
Aussage selbst. Da Ihre eine Abfrage die Daten einmal durchläuft, ist sie möglicherweise viel besser als mehrere Abfragen für jede Produkt-ID.
Die Abfrage kann mit einem WHERE
besser ablaufen -Klausel -- wenn das mit Ihrer langen Abfrage überhaupt möglich ist.
Wenn die Tabelle groß und nach Produkt-ID indiziert ist und die Abfrage eine kleine Teilmenge von Produkten aktualisiert, erzielen Sie möglicherweise eine bessere Leistung, wenn Sie die Abfrage in separate UPDATE
aufteilen Abfragen pro product_id. Andernfalls kann es passieren, dass Sie einen Tabellenscan auf einem riesigen Tisch erhalten. Zum Beispiel:
UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2
Wenn alle Fälle von product_id
abhängen , dann könnten Sie die Syntax wie folgt abkürzen:
CASE product_id
WHEN 1 THEN a*b*c*d
WHEN 2 THEN ...
END
Ich würde empfehlen, Kommentare zu verwenden, um den Code lesbarer zu machen. Wenn es sich bei den Produkten beispielsweise um einen hartcodierten Satz bekannter IDs handelt, können Sie diese angeben. Ebenso kann es bei der zukünftigen Codepflege hilfreich sein, die Berechnung zu erklären:
UPDATE table
SET totalAmt =
CASE WHEN product_id = 1 -- table
THEN a*b*c*d -- some explanation of calculation
CASE WHEN product_id = 2 -- chair
THEN ...