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

PostgreSQL:cláusula GROUP BY o usarse en una función agregada

Una consulta como esta (recuperar todas o la mayoría de las filas) es más rápida si GROUP antes de JOIN . Así:

SELECT id, name, created_at, updated_at, u.ct
FROM   cars c
LEFT   JOIN (
    SELECT car_id, count(*) AS ct
    FROM   users
    GROUP  BY 1
    ) u ON u.car_id  = c.id
ORDER  BY u.ct DESC;

De esta forma, necesitará muchas menos operaciones de unión. Y las filas de la tabla cars no tienen que multiplicarse primero uniéndose a muchos usuarios cada uno y luego volver a agruparse para volver a ser únicos.
Solo se debe agrupar la tabla correcta, lo que también simplifica la lógica.