Planista nie decyduje się na użycie określonej strategii łączenia opartej na głębokim rozumowaniu, po prostu konstruuje wszystkie możliwe strategie łączenia, szacuje koszt i wybiera najtańszą.
To powiedziawszy, zagnieżdżone sprzężenia pętli są zwykle najlepszym wyborem, jeśli zewnętrzna tabela jest mała, więc wewnętrzna pętla nie musi być często wykonywana. Ponadto indeks warunku złączenia tabeli wewnętrznej może znacznie obniżyć koszt złączenia w pętli zagnieżdżonej i uczynić go atrakcyjną strategią.
W twoim przypadku zły wybór wynika z błędnego oszacowania:
Foreign Scan on wind_forecast_recent w (cost=... rows=1 ...) (actual ... rows=7 ...)
To powoduje, że wewnętrzna pętla jest wykonywana 7 razy, a nie raz, więc czas wykonania wynosi 70 sekund, a nie 10.
Powinieneś zbierać statystyki tabeli na wind_forecast_recent
:
ANALYZE wind_forecast_recent;
Pamiętaj, że autoanaliza nie traktować obce stoły; musisz sam o to zadbać.
Jeśli to nie wystarczy, możesz spróbować ustawić use_remote_estimate
na obcej tabeli i upewnij się, że statystyki tabeli są dokładne w zdalnej bazie danych.