sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL - GROUP BY-sats eller användas i en aggregerad funktion

En fråga som denna (hämtar alla eller de flesta rader) är snabbare om du GROUP innan du JOIN . Så här:

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;

På så sätt behöver du mycket färre anslutningsoperationer. Och raderna i tabellen cars behöver inte först multipliceras genom att ansluta till många användare var och en och sedan grupperas tillbaka för att vara unik igen.
Endast rätt tabell måste grupperas, vilket gör logiken enklare också.



  1. SQL MIN() för nybörjare

  2. Hur man tar bort objekt från SQLite-databasen med SQLiteOpenHelper-klassen

  3. SQL UPPDATERING

  4. Hur man hämtar fältnamn från temporär tabell (SQL Server 2008)