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

प्रदर्शन अंतर:INNER JOIN बनाम WHERE क्लॉज पर रखी गई शर्त

जिस कारण से आप एक अंतर देख रहे हैं वह निष्पादन योजना के कारण है जिसे योजनाकार एक साथ रख रहा है, यह स्पष्ट रूप से क्वेरी के आधार पर अलग है (यकीनन, यह 2 प्रश्नों को समान होने के लिए अनुकूलित करना चाहिए और यह एक बग हो सकता है ) इसका मतलब यह है कि योजनाकार सोचता है कि प्रत्येक कथन में परिणाम प्राप्त करने के लिए उसे एक विशेष तरीके से काम करना होगा।

जब आप इसे जॉइन के भीतर करते हैं, तो योजनाकार को शायद तालिका से चयन करना होगा, "ट्रू" भाग द्वारा फ़िल्टर करना होगा, फिर परिणाम सेट में शामिल होना होगा। मुझे लगता है कि यह एक बड़ी तालिका है, और इसलिए देखने के लिए बहुत सारे डेटा हैं, और यह इंडेक्स का कुशलतापूर्वक उपयोग नहीं कर सकता है।

मुझे संदेह है कि यदि आप इसे WHERE क्लॉज में करते हैं, तो योजनाकार एक ऐसा मार्ग चुन रहा है जो अधिक कुशल है (यानी या तो इंडेक्स आधारित, या पूर्व फ़िल्टर किए गए डेटासेट)।

आप शायद दो स्तंभों पर एक अनुक्रमणिका जोड़कर शामिल होने का कार्य तेज़ (यदि तेज़ नहीं) कर सकते हैं (सुनिश्चित नहीं हैं कि शामिल स्तंभ और एकाधिक स्तंभ अनुक्रमणिका अभी तक Postgres पर समर्थित हैं)।

संक्षेप में, योजनाकार वह समस्या है जो परिणाम सेट तक पहुंचने के लिए 2 अलग-अलग मार्गों को चुन रहा है, और उनमें से एक दूसरे की तरह कुशल नहीं है। तालिका की पूरी जानकारी और व्याख्या विश्लेषण जानकारी के बिना यह जानना हमारे लिए असंभव है कि इसके क्या कारण हैं।

यदि आप इस बारे में विशिष्ट जानकारी चाहते हैं कि आपकी विशिष्ट क्वेरी ऐसा क्यों कर रही है, तो आपको अधिक जानकारी प्रदान करने की आवश्यकता होगी। हालांकि कारण यह है कि योजनाकार विभिन्न मार्गों को चुन रहा है।

अतिरिक्त पठन सामग्री:

http://www.postgresql.org/docs/current/static/explicit-joins.html

बस स्किम्ड, ऐसा लगता है कि पोस्टग्रेज प्लानर इसे ऑप्टिमाइज़ करने के लिए फिर से ऑर्डर नहीं करता है। अपने कथन में शामिल होने के क्रम को बदलने का प्रयास करें यह देखने के लिए कि क्या आपको वही प्रदर्शन मिलता है... बस एक विचार।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में डेटाबेस को सूचीबद्ध करना और स्विच करना

  2. यदि इसमें सक्रिय कनेक्शन हैं तो PostgreSQL डेटाबेस को कैसे छोड़ें?

  3. PostgresSQL स्थापना विफल:डेटाबेस क्लस्टर आरंभीकरण विफल MAC os

  4. पोस्टग्रेएसक्यूएल गिनती पाठ में कितनी बार सबस्ट्रिंग होती है

  5. पोस्टग्रेस्क्ल में काम नहीं कर रहा है