sql >> Database >  >> RDS >> PostgreSQL

Extreem trage PostgreSQL-query met ORDER- en LIMIT-clausules

Als je zowel de LIMIT als ORDER BY hebt, heeft de optimizer besloten dat het sneller is om door de ongefilterde records op foo te strompelen door de toets aflopend tot vijf overeenkomsten voor de rest van de criteria. In de andere gevallen voert het de query gewoon uit als een geneste lus en retourneert het alle records.

Terloops zou ik zeggen dat het probleem is dat PG de verbinding niet kraakt distributie van de verschillende id's en daarom is het plan zo suboptimaal.

Voor mogelijke oplossingen:ik ga ervan uit dat je onlangs ANALYZE hebt uitgevoerd. Zo niet, doe dat dan. Dat kan verklaren waarom uw geschatte tijden hoog zijn, zelfs op de versie die snel terugkeert. Als het probleem zich blijft voordoen, voert u misschien ORDER BY uit als een subselectie en drukt u de LIMIT op in een buitenste query.



  1. Waarom worden mijn Django SessionWizardView-enquêtetoepassingsgegevens niet in een bruikbaar formaat weergegeven in mijn MySQL-database?

  2. Geserialiseerde gegevens in mysql-database moeten worden gecombineerd in een array

  3. MySql-tabel invoegen indien niet aanwezig, anders bijwerken

  4. MySQLi-klassenpatroon voor verbinding, sluiten, open laten?