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

Query PostgreSQL estremamente lenta con clausole ORDER e LIMIT

Quando hai sia LIMIT che ORDER BY, l'ottimizzatore ha deciso che è più veloce zoppicare attraverso i record non filtrati su foo con una chiave discendente finché non ottiene cinque corrispondenze per il resto dei criteri. Negli altri casi, esegue semplicemente la query come un ciclo nidificato e restituisce tutti i record.

A prima vista, direi che il problema è che PG non grok il giunto distribuzione dei vari ID ed è per questo che il piano non è ottimale.

Per le possibili soluzioni:presumo che tu abbia eseguito ANALYZE di recente. In caso contrario, fallo. Questo potrebbe spiegare perché i tuoi tempi stimati sono alti anche sulla versione che ritorna velocemente. Se il problema persiste, forse eseguire ORDER BY come sottoselezione e inserire LIMIT in una query esterna.