No espero ningún problema de rendimiento del CASE
declaración misma. Dado que su única consulta está realizando una sola pasada a los datos, podría funcionar mucho mejor que varias consultas para cada ID de producto.
La consulta puede funcionar mejor con WHERE
cláusula, si eso es posible con su consulta larga.
Si la tabla es grande y está indexada por ID de producto, y la consulta actualiza un pequeño subconjunto de productos, es posible que obtenga un mejor rendimiento dividiendo la consulta en UPDATE
separados consultas por product_id. De lo contrario, puede terminar con un escaneo de tabla en una tabla enorme. Por ejemplo:
UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2
Si todos los casos dependen de product_id
, entonces podría abreviar la sintaxis de esta manera:
CASE product_id
WHEN 1 THEN a*b*c*d
WHEN 2 THEN ...
END
Recomendaría usar comentarios para que el código sea más legible. Por ejemplo, si los productos son un conjunto codificado de identificaciones conocidas, puede especificar cuáles son. Del mismo modo, puede ayudar al futuro mantenimiento del código explicar el cálculo:
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 ...