PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Modifier manuellement le plan d'exécution de la requête dans postgresql ?

Utilisez une sous-requête ou CTE pour forcer certaines opérations en premier. Comme :

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

Vous devez comprendre quoi vous faites, bien sûr. Dans l'exemple, je sélectionne 10 arbitraire lignes, puis triez-les par la première colonne.
Vous pouvez utiliser plusieurs couches de sous-requêtes ou plusieurs CTE à la suite.

Même exemple que CTE :

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

Une sous-requête est généralement plus rapide pour les requêtes simples, un CTE offre des fonctionnalités supplémentaires (comme la réutilisation du même CTE à plusieurs endroits sur différents niveaux de requête).