मुझे CASE
. से किसी भी प्रदर्शन समस्या की उम्मीद नहीं है बयान ही। चूंकि आपकी एक क्वेरी डेटा पर एक पास बना रही है, इसलिए यह प्रत्येक उत्पाद आईडी के लिए कई क्वेरी से बेहतर प्रदर्शन कर सकती है।
क्वेरी WHERE
. के साथ बेहतर प्रदर्शन कर सकती है खंड-- यदि यह आपकी लंबी क्वेरी के साथ भी संभव है।
यदि तालिका बड़ी है, और इसे उत्पाद आईडी द्वारा अनुक्रमित किया गया है, और क्वेरी उत्पादों के एक छोटे उपसमुच्चय को अपडेट कर रही है, तो आपको क्वेरी को अलग UPDATE
में तोड़कर बेहतर प्रदर्शन मिल सकता है। प्रति product_id क्वेरी। अन्यथा आप एक विशाल टेबल पर एक टेबल स्कैन के साथ समाप्त हो सकते हैं। उदाहरण के लिए:
UPDATE table SET totalAmt = a*b*c*d WHERE product_id = 1
UPDATE table SET totalAmt = c*d*e + 1 WHERE product_id = 2
यदि सभी मामले product_id
. पर निर्भर करते हैं , तो आप सिंटैक्स को इस तरह संक्षिप्त कर सकते हैं:
CASE product_id
WHEN 1 THEN a*b*c*d
WHEN 2 THEN ...
END
मैं कोड को और अधिक पठनीय बनाने के लिए टिप्पणियों का उपयोग करने की अनुशंसा करता हूं। उदाहरण के लिए, यदि उत्पाद ज्ञात आईडी के हार्ड-कोडेड सेट हैं, तो आप निर्दिष्ट कर सकते हैं कि वे क्या हैं। इसी तरह, यह गणना की व्याख्या करने के लिए भविष्य के कोड रखरखाव में मदद कर सकता है:
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 ...