Non mi aspetto alcun problema di prestazioni da CASE
affermazione stessa. Poiché la tua unica query sta effettuando un passaggio ai dati, potrebbe funzionare molto meglio di più query per ciascun ID prodotto.
La query potrebbe funzionare meglio con un WHERE
clausola-- se ciò è possibile anche con la tua lunga query.
Se la tabella è grande ed è indicizzata per ID prodotto e la query sta aggiornando un piccolo sottoinsieme di prodotti, potresti ottenere prestazioni migliori suddividendo la query in UPDATE
separati query per product_id. Altrimenti potresti finire con una scansione del tavolo su un tavolo enorme. Ad esempio:
UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2
Se tutti i casi dipendono da product_id
, quindi potresti abbreviare la sintassi in questo modo:
CASE product_id
WHEN 1 THEN a*b*c*d
WHEN 2 THEN ...
END
Consiglierei di utilizzare i commenti per rendere il codice più leggibile. Ad esempio, se i prodotti sono un set codificato di ID noti, è possibile specificare di cosa si tratta. Allo stesso modo, può aiutare la futura manutenzione del codice a spiegare il calcolo:
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 ...