sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cambiar el plan de ejecución de consulta en postgresql manualmente?

Use una subconsulta o CTE para forzar ciertas operaciones primero. Me gusta:

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

Necesitas entender qué estás haciendo, por supuesto. En el ejemplo, selecciono 10 arbitrario filas y luego ordenarlas por la primera columna.
Puede usar múltiples capas de subconsultas o múltiples CTE en una fila.

Mismo ejemplo que CTE:

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

Una subconsulta suele ser más rápida para consultas simples, una CTE ofrece funciones adicionales (como reutilizar la misma CTE en varios lugares en diferentes niveles de consulta).