Kiedy masz zarówno LIMIT, jak i ORDER BY, optymalizator zdecydował, że szybciej limpować przez niefiltrowane rekordy na foo, malejąco według klawisza, aż uzyska pięć dopasowań dla pozostałych kryteriów. W innych przypadkach po prostu uruchamia zapytanie jako zagnieżdżoną pętlę i zwraca wszystkie rekordy.
Powiedziałbym, że problem polega na tym, że PG nie nabija stawu dystrybucja różnych identyfikatorów i dlatego plan jest tak nieoptymalny.
Możliwe rozwiązania:Zakładam, że ostatnio uruchomiłeś ANALIZA. Jeśli nie, zrób to. To może wyjaśniać, dlaczego szacowane czasy są wysokie, nawet w wersji, która szybko powraca. Jeśli problem będzie się powtarzał, być może uruchom ORDER BY jako podselekcję i włącz LIMIT w zewnętrznym zapytaniu.