Saya tidak mengharapkan masalah kinerja apa pun dari CASE
pernyataan itu sendiri. Karena satu kueri Anda menghasilkan satu lintasan pada data, kinerjanya mungkin jauh lebih baik daripada beberapa kueri untuk setiap ID produk.
Kueri dapat berkinerja lebih baik dengan WHERE
klausa-- jika itu mungkin dengan kueri panjang Anda.
Jika tabel besar, dan diindeks oleh id produk, dan kueri memperbarui sebagian kecil produk, Anda mungkin mendapatkan kinerja yang lebih baik dengan memecah kueri menjadi UPDATE
terpisah kueri per product_id. Jika tidak, Anda mungkin berakhir dengan pemindaian tabel di atas meja besar. Misalnya:
UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2
Jika semua kasus bergantung pada product_id
, maka Anda bisa menyingkat sintaks seperti ini:
CASE product_id
WHEN 1 THEN a*b*c*d
WHEN 2 THEN ...
END
Saya akan merekomendasikan menggunakan komentar untuk membuat kode lebih mudah dibaca. Misalnya, jika produk adalah kumpulan ID yang dikenal dengan hard-code, Anda dapat menentukan produk tersebut. Demikian pula, mungkin membantu pemeliharaan kode di masa mendatang untuk menjelaskan perhitungan:
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 ...