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

PostgresSQL नेस्टेड लूप्स - INNER JOIN करते समय प्लानर नेस्टेड लूप का उपयोग करने का निर्णय कब लेता है?

योजनाकार गहरे तर्क के आधार पर एक निश्चित जुड़ने की रणनीति का उपयोग करने का निर्णय नहीं लेता है, यह बस सभी संभावित जुड़ने की रणनीतियों का निर्माण करता है, लागत का अनुमान लगाता है और सबसे सस्ता विकल्प चुनता है।

उस ने कहा, बाहरी तालिका छोटी होने पर नेस्टेड लूप जॉइन आमतौर पर सबसे अच्छा विकल्प होता है, ताकि आंतरिक लूप को अक्सर निष्पादित न करना पड़े। साथ ही, इनर टेबल की जॉइन कंडीशन पर एक इंडेक्स नेस्टेड लूप जॉइन की लागत को काफी कम कर सकता है और इसे एक आकर्षक रणनीति बना सकता है।

आपके मामले में, गलत विकल्प गलत अनुमान के कारण है:

Foreign Scan on wind_forecast_recent w  (cost=... rows=1 ...) (actual ... rows=7 ...)

यह आंतरिक लूप को एक बार के बजाय 7 बार निष्पादित करने का कारण बनता है, ताकि निष्पादन का समय 10 के बजाय 70 सेकंड हो।

आपको wind_forecast_recent . पर तालिका के आंकड़े एकत्र करने चाहिए :

ANALYZE wind_forecast_recent;

याद रखें कि स्वतः विश्लेषण नहीं करता है विदेशी तालिकाओं का इलाज करें; आपको इसका ख्याल खुद रखना होगा।

अगर इससे कोई फायदा नहीं होता है, तो आप use_remote_estimate सेट करके देख सकते हैं विदेशी तालिका पर विकल्प और सुनिश्चित करें कि दूरस्थ डेटाबेस पर तालिका आँकड़े सटीक हैं।




  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 के लिए Amazon RDS और Aurora की पेशकशों का अवलोकन

  2. सम्मिलित करें ... चयन से ... रिटर्निंग आईडी मैपिंग

  3. अन्य जॉइन टेबल कॉलम के आधार पर किसी फ़ील्ड के योग की गणना करना

  4. Ubuntu 18.04 के लिए PostgreSQL 11 में अपग्रेड कैसे करें?

  5. यह जांचने के 5 तरीके कि क्या PostgreSQL में कोई तालिका मौजूद है