Планиращият не решава да използва определена стратегия за присъединяване въз основа на дълбоки разсъждения, той просто изгражда всички възможни стратегии за присъединяване, оценява разходите и избира най-евтината.
Въпреки това, свързването на вложен цикъл обикновено е най-добрият избор, ако външната таблица е малка, така че вътрешният цикъл да не се изпълнява често. Също така, индексът на условието за свързване на вътрешната таблица може значително да намали разходите за свързване на вложен цикъл и да го направи привлекателна стратегия.
Във вашия случай лошият избор се дължи на грешна оценка:
Foreign Scan on wind_forecast_recent w (cost=... rows=1 ...) (actual ... rows=7 ...)
Това кара вътрешния цикъл да се изпълнява 7 пъти вместо веднъж, така че времето за изпълнение е 70 секунди, а не 10.
Трябва да събирате таблична статистика за wind_forecast_recent
:
ANALYZE wind_forecast_recent;
Не забравяйте, че автоматичният анализ не лечение на чужди маси; трябва сам да се погрижиш за това.
Ако това не свърши работа, можете да опитате да зададете use_remote_estimate
опция на чуждата таблица и се уверете, че статистическите данни на таблицата са точни в отдалечената база данни.