Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine einzelne Spalte in komplexen SQL-Abfragen effizient aggregieren?

Wie kann ich eine einzelne Spalte in komplexen SQL-Abfragen effizient aggregieren?

DDD
Freigeben: 2024-12-25 18:07:20
Original
968 Leute haben es durchsucht

How Can I Efficiently Aggregate a Single Column in Complex SQL Queries?

Aggregieren Sie einzelne Spalten in komplexen Abfragen

Bei der Arbeit mit Abfragen, die zahlreiche Spalten enthalten, kann es schwierig sein, eine einzelne Spalte effektiv zu aggregieren. Während die herkömmliche Methode, alle Felder in die SELECT-, GROUP BY- und ORDER BY-Klauseln einzubeziehen, möglicherweise ausreicht, kann sie zu ausführlichen Abfragen führen.

Einfachere Alternative für PostgreSQL 9.1

Wenn ja Mit PostgreSQL 9.1 oder höher gibt es einen einfacheren Ansatz. Da Sie foo1 als Primärschlüssel angegeben haben, können Sie Ihre Abfrage wie folgt vereinfachen:

SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ')
FROM   tbl1
GROUP  BY 1
ORDER  BY foo7, foo8;
Nach dem Login kopieren

Zuerst aggregieren, später bei Abfragen mit mehreren Tabellen zusammenführen

Allerdings, wenn es sich um mehrere handelt Bei Tabellen und komplexeren Beziehungen kann es effizienter sein, zuerst zu aggregieren und später zusammenzuführen. Betrachten Sie diese überarbeitete Abfrage:

SELECT t1.foo1, t1.foo2, ...
     , t2.bar1, t2.bar2, ...
     , a.aggregated_col 
FROM   tbl1 t1
LEFT   JOIN tbl2 t2 ON ...
...
LEFT   JOIN (
   SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col
   FROM   agg_tbl a ON ...
   GROUP  BY some_id
   ) a ON a.some_id = ?.some_id
ORDER  BY ...
Nach dem Login kopieren

Durch die separate Aggregation und Verknüpfung vermeiden Sie unnötigen Aggregationsaufwand für den Großteil Ihrer Abfrage.

Das obige ist der detaillierte Inhalt vonWie kann ich eine einzelne Spalte in komplexen SQL-Abfragen effizient aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage