योजनाकार गहरे तर्क के आधार पर एक निश्चित जुड़ने की रणनीति का उपयोग करने का निर्णय नहीं लेता है, यह बस सभी संभावित जुड़ने की रणनीतियों का निर्माण करता है, लागत का अनुमान लगाता है और सबसे सस्ता विकल्प चुनता है।
उस ने कहा, बाहरी तालिका छोटी होने पर नेस्टेड लूप जॉइन आमतौर पर सबसे अच्छा विकल्प होता है, ताकि आंतरिक लूप को अक्सर निष्पादित न करना पड़े। साथ ही, इनर टेबल की जॉइन कंडीशन पर एक इंडेक्स नेस्टेड लूप जॉइन की लागत को काफी कम कर सकता है और इसे एक आकर्षक रणनीति बना सकता है।
आपके मामले में, गलत विकल्प गलत अनुमान के कारण है:
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
सेट करके देख सकते हैं विदेशी तालिका पर विकल्प और सुनिश्चित करें कि दूरस्थ डेटाबेस पर तालिका आँकड़े सटीक हैं।