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

WHERE क्लॉज में सशर्त फ़िल्टरिंग लागू करें

सबसे पहले, यह ((J.Id = @Jobid and @Jobid>0) or @Jobid=0)
इस (@Jobid = 0 or J.Id = @Jobid) से बदला जा सकता है ध्यान दें कि 0 . के बाद से स्पष्ट रूप से जॉब आईडी (या कर्मचारी, या लीड), and . के लिए मान्य मान नहीं है भाग अप्रासंगिक है क्योंकि किसी भी रिकॉर्ड में कभी भी 0 की आईडी नहीं होगी।

दूसरा, 0 का प्रयोग न करें अमान्य मान के रूप में, null का उपयोग करें बजाय। यह प्रदर्शन को प्रभावित नहीं करेगा, लेकिन यह एक बेहतर प्रोग्रामिंग आदत है, क्योंकि 0 अन्य स्थितियों में बहुत अच्छी तरह से मान्य मान हो सकता है।

तीसरा, कैच-ऑल क्वेश्चन को प्रदर्शन प्रभावित होने के लिए जाना जाता है, विशेष रूप से संग्रहीत प्रक्रियाओं में, क्योंकि कैश्ड निष्पादन योजना वर्तमान निष्पादन के लिए सर्वोत्तम नहीं हो सकती है। मेरे सर्वोत्तम ज्ञान के लिए, इसे संभालने का सबसे अच्छा तरीका क्वेरी में एक पुन:संकलित संकेत जोड़ना है, जैसा कि यह लेख और उस लेख में ।

इसलिए, मैं आपकी क्वेरी को इस तरह दिखने का सुझाव देता हूं:

CREATE PROCEDURE <procedure name>
(
        @Jobid      INT=NULL,
        @leadid     INT=NULL,
        @employeeid INT=NULL
)
AS

SELECT e.id,
       l.id,
       j.id,
       e.NAME,
       l.NAME,
       j.NAME
FROM   employee e
       INNER JOIN leads l
               ON e.leadid = l.id
       INNER JOIN Jobs j
               ON j.id = e.Jobid 
WHERE (@Jobid IS NULL OR J.Id = @Jobid)
AND (@leadid IS NULL OR l.Id = @leadid)
AND (@employeeid IS NULL OR e.Id = @employeeid)
OPTION(RECOMPILE)

GO

तालिकाओं के सही अनुक्रमण के साथ चयन प्रदर्शन में आमतौर पर सुधार होता है। हालाँकि, अनुक्रमण को सही ढंग से ज्ञान की आवश्यकता है जो सभी डेवलपर्स के पास नहीं है। यह अच्छी तरह से पढ़ने लायक विषय है। मैं यहां से शुरू करूंगा



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. नामित कतारों के साथ SqlD निर्भरता का उपयोग करना

  2. SQL में समान वितरण वाले आइटम समूहित करना

  3. एसएसआईएस निष्पादन प्रक्रिया कार्य SQL सर्वर नौकरी से लटक रहा है, कोई त्रुटि नहीं दी गई है

  4. डीएमएल ट्रिगर से एसक्यूएल स्टेटमेंट

  5. SQL सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125