Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर:लंबे केस स्टेटमेंट का विकल्प

मुझे 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 ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी ट्यूनिंग के साथ SQL गतिरोध से बचना:ब्रेंट ओज़ार की सलाह

  2. मैं SQL सर्वर प्रबंधन स्टूडियो 2008 में जेनरेट स्क्रिप्ट कार्य को स्वचालित कैसे कर सकता हूं?

  3. SQL सर्वर में रिस्टोरिंग मोड से डेटाबेस को ऑनलाइन कैसे करें

  4. मैं SQL सर्वर Windows मोड से मिश्रित मोड (SQL Server 2008) में कैसे बदल सकता हूँ?

  5. Microsoft SQL 2005 में प्राकृतिक (मानव अल्फा-न्यूमेरिक) सॉर्ट करें