Når du har både LIMIT og ORDER BY, har optimeringsværktøjet besluttet, at det er hurtigere at halte gennem de ufiltrerede poster på foo ved at gå ned, indtil den får fem matches for resten af kriterierne. I de andre tilfælde kører den blot forespørgslen som en indlejret løkke og returnerer alle posterne.
Umiddelbart vil jeg sige, at problemet er, at PG ikke grokker joint fordeling af de forskellige id'er og derfor er planen så suboptimal.
For mulige løsninger:Jeg antager, at du har kørt ANALYSE for nylig. Hvis ikke, så gør det. Det kan forklare, hvorfor dine estimerede tider er høje, selv på den version, der vender hurtigt tilbage. Hvis problemet fortsætter, kan du måske køre ORDER BY som et undervalg og slå LIMIT på i en ydre forespørgsel.