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

PostgreSQL - Clause GROUP BY ou être utilisé dans une fonction d'agrégation

Une requête comme celle-ci (récupérant toutes ou la plupart des lignes) est plus rapide si vous GROUP avant de JOIN . Comme ceci :

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 cette façon, vous avez besoin de beaucoup moins d'opérations de jointure. Et les lignes de la table cars n'ont pas besoin d'être d'abord multipliés en joignant à plusieurs utilisateurs chacun, puis regroupés pour être à nouveau uniques.
Seule la bonne table doit être regroupée, ce qui simplifie également la logique.