Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine einzelne Spalte in komplexen SQL-Abfragen effizient aggregieren?
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.
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;
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 ...
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!