sql >> Database teknologi >  >> RDS >> PostgreSQL

Ekstremt langsom PostgreSQL-forespørgsel med ORDER- og LIMIT-klausuler

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.



  1. MySQL:IN-klausul for datoer MELLEM en start- og slutdato?

  2. Hvordan opdaterer man en tabel fra en server til en anden?

  3. indlæse billeder og data fra mysql til Flash ved hjælp af PHP?

  4. Meget simpel AVG() aggregeringsforespørgsel på MySQL-server tager latterligt lang tid