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

जहां क्लॉज IN से पहले और जॉइन या बाद में बेहतर तरीके से निष्पादित होता है

इनर जॉइन या लेफ्ट जॉइन में बाईं ओर एक टेबल के मामले में, कई मामलों में, ऑप्टिमाइज़र यह पाएगा कि किसी भी प्रकार के भौतिक जुड़ाव को वास्तव में करने से पहले किसी भी फ़िल्टरिंग को पहले (उच्चतम चयनात्मकता) करना बेहतर है - तो वहाँ स्पष्ट रूप से संचालन के भौतिक क्रम हैं जो बेहतर हैं।

कुछ हद तक आप कभी-कभी इसे अपने SQL के साथ नियंत्रित कर सकते हैं (या इसमें हस्तक्षेप कर सकते हैं), उदाहरण के लिए, उपश्रेणियों में समुच्चय के साथ।

क्वेरी में बाधाओं को संसाधित करने का तार्किक क्रम केवल ज्ञात अपरिवर्तनीय परिवर्तनों के अनुसार ही रूपांतरित किया जा सकता है।

तो:

SELECT *
FROM a
INNER JOIN b
    ON a.id = b.id
WHERE a.something = something
    AND b.something = something

तार्किक रूप से अभी भी बराबर है:

SELECT *
FROM a
INNER JOIN b
    ON a.id = b.id
    AND a.something = something
    AND b.something = something

और उनके पास आम तौर पर एक ही निष्पादन योजना होगी।

दूसरी ओर:

SELECT *
FROM a
LEFT JOIN b
    ON a.id = b.id
WHERE a.something = something
    AND b.something = something

इसके बराबर नहीं है:

SELECT *
FROM a
LEFT JOIN b
    ON a.id = b.id
    AND a.something = something
    AND b.something = something

और इसलिए अनुकूलक उन्हें एक ही निष्पादन योजना में बदलने वाला नहीं है।

ऑप्टिमाइज़र बहुत ही स्मार्ट है और चीजों को काफी सफलतापूर्वक इधर-उधर करने में सक्षम है, जिसमें संक्षिप्त दृश्य और इनलाइन टेबल-वैल्यू फ़ंक्शंस के साथ-साथ कुछ विशेष प्रकार के एग्रीगेट्स के माध्यम से चीजों को काफी सफलतापूर्वक नीचे धकेलना शामिल है।

आमतौर पर, जब आप SQL लिखते हैं, तो इसे समझने योग्य, बनाए रखने योग्य और सही होना चाहिए। जहां तक ​​निष्पादन में दक्षता की बात है, यदि ऑप्टिमाइज़र को घोषणात्मक SQL को स्वीकार्य प्रदर्शन के साथ एक निष्पादन योजना में बदलने में कठिनाई हो रही है, तो कोड को कभी-कभी सरलीकृत किया जा सकता है या उपयुक्त अनुक्रमणिका या संकेत जोड़े या उन चरणों में विभाजित किया जा सकता है जो चाहिए अधिक तेज़ी से प्रदर्शन करें - सभी आक्रमण के क्रम में।



  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. एडीओ पैरामीटरयुक्त क्वेरी के साथ चर @myvariable त्रुटि घोषित करनी चाहिए

  3. SQL सर्वर (T-SQL) में एक डेटाबेस मेल प्रोफ़ाइल बनाएँ

  4. वर्चर (अधिकतम) चर का अधिकतम आकार

  5. DatedIFF () SQL सर्वर में उदाहरण