PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ändern Sie den Ausführungsplan der Abfrage in Postgresql manuell?

Verwenden Sie eine Unterabfrage oder CTE um bestimmte Operationen zuerst zu erzwingen. Wie:

SELECT *
FROM  (
   SELECT *
   FROM   tbl
   LIMIT  10
   ) x
ORDER  BY 1;

Sie müssen was verstehen das tust du natürlich. Im Beispiel wähle ich 10 willkürlich aus Zeilen und sortieren Sie sie dann nach der ersten Spalte.
Sie können mehrere Schichten von Unterabfragen oder mehrere CTEs hintereinander verwenden.

Gleiches Beispiel wie CTE:

WITH x AS (
   SELECT *
   FROM   tbl
   LIMIT  10
   )
SELECT *
FROM   x
ORDER  BY 1;

Eine Unterabfrage ist normalerweise schneller für einfache Abfragen, ein CTE bietet zusätzliche Funktionen (wie die Wiederverwendung desselben CTE an mehreren Stellen auf verschiedenen Abfrageebenen).