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

WHERE-CASE क्लॉज सबक्वेरी परफॉर्मेंस

मुझे लगता है कि समाधान सिद्धांत रूप में आपको प्रदर्शन बढ़ाने में मदद कर सकता है, लेकिन यह इस बात पर भी निर्भर करता है कि स्केलर फ़ंक्शन वास्तव में क्या करता है। मुझे लगता है कि इस मामले में (मेरा अनुमान तिमाही में अंतिम दिन की तारीख को स्वरूपित कर रहा है) वास्तव में नगण्य होगा।

हो सकता है कि आप सुझाए गए समाधान के साथ इस पृष्ठ को पढ़ना चाहें:

http://connect.microsoft.com/SQLServer/feedback/details/273443/the-scalar-expression-function-would-speed-performance- while-keeper-the-benefits-of- कार्य#

और वर्कअराउंड में, एक टिप्पणी है कि

तो ऐसा लगता है कि हाँ, यह प्रदर्शन को बढ़ा सकता है।

आपका समाधान सही है, लेकिन मैं इसके बजाय ELSE का उपयोग करने के लिए SQL के सुधार पर विचार करने की सलाह दूंगा, यह मेरे लिए क्लीनर दिखता है:

AND ReportTypeID = CASE WHEN (@X = 1) THEN  1 
                    ELSE 4
                    END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस में छवि डालें

  2. टी-एसक्यूएल का उपयोग करके, स्ट्रिंग से nth सीमांकित तत्व लौटाएं

  3. वेरिएबल स्कोप जो संग्रहित प्रक्रियाओं में थोड़ी देर के भीतर परिभाषित होते हैं - एसक्यूएल सर्वर

  4. SQL सर्वर:Newbies के लिए उपयोगी टिप्स

  5. SQL सर्वर में FIFO आधारित स्टॉक इन्वेंट्री वैल्यूएशन