PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL - GROUP BY-Klausel oder in einer Aggregatfunktion verwendet werden

Eine Abfrage wie diese (alle oder die meisten Zeilen abrufen) ist schneller wenn Sie GROUP bevor Sie JOIN werden . So:

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;

Auf diese Weise benötigen Sie viel weniger Join-Operationen. Und die Zeilen der Tabelle cars müssen nicht erst multipliziert werden, indem sie zu vielen Benutzern hinzugefügt und dann wieder gruppiert werden, um wieder eindeutig zu sein.
Nur die rechte Tabelle muss gruppiert werden, was auch die Logik vereinfacht.