sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - GROUP BY-clausule of worden gebruikt in een aggregatiefunctie

Een zoekopdracht zoals deze (alle of de meeste rijen ophalen) is sneller als je GROUP voordat je JOIN . Zoals dit:

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;

Zo heb je veel minder join-operaties nodig. En de rijen van de tabel cars hoeven niet eerst te worden vermenigvuldigd door zich bij meerdere gebruikers aan te sluiten en vervolgens weer te groeperen om weer uniek te zijn.
Alleen de juiste tabel hoeft te worden gegroepeerd, wat de logica ook eenvoudiger maakt.



  1. String_agg voor SQL Server vóór 2017

  2. Arabisch opslaan in SQL-database

  3. T-SQL Hoe tabellen dynamisch te creëren in opgeslagen procedures?

  4. Trigger vs. controlebeperking