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

Modificare manualmente il piano di esecuzione della query in postgresql?

Utilizzare una sottoquery o CTE forzare prima determinate operazioni. Come:

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

Devi capire cosa stai facendo, ovviamente. Nell'esempio, seleziono 10 arbitrario righe e quindi ordinarle in base alla prima colonna.
Puoi utilizzare più livelli di sottoquery o più CTE in una riga.

Stesso esempio di CTE:

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

Una sottoquery è generalmente più veloce per query semplici, una CTE offre funzionalità aggiuntive (come riutilizzare la stessa CTE in più posizioni su diversi livelli di query).