Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine einzelne Spalte in einer mehrspaltigen Abfrage effizient aggregieren?

Wie kann ich eine einzelne Spalte in einer mehrspaltigen Abfrage effizient aggregieren?

Barbara Streisand
Freigeben: 2024-12-20 07:46:10
Original
934 Leute haben es durchsucht

How Can I Efficiently Aggregate a Single Column in a Multi-Column Query?

Eine einzelne Spalte in einer mehrspaltigen Abfrage aggregieren

Übersicht

Das Aggregieren einer einzelnen Spalte in einer Abfrage mit zahlreichen anderen Spalten kann insbesondere eine Herausforderung sein wenn alle SELECT- und ORDER BY-Felder entweder aggregiert oder Teil von GROUP BY sein müssen. Die Verwaltung dieser ausführlichen Abfragestruktur kann umständlich werden.

Vereinfachte Abfrage für PostgreSQL 9.1

In PostgreSQL 9.1 oder höher gibt es eine einfachere Lösung. Wenn Primärschlüssel als GROUP BY-Kriterium verwendet werden, kann die Abfrage optimiert werden:

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

Abfrage mit mehreren Tabellen

Bei Abfragen mit mehreren Tabellen mit unterschiedlichen Beziehungen ist es effizienter, die Daten zuerst zu aggregieren und später Tabellen verknüpfen:

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 Trennung von Aggregation und Verknüpfung kann der Großteil der Abfrage unnötige Aggregation vermeiden, wodurch die Komplexität verringert und Verbesserungen erzielt werden Leistung.

Das obige ist der detaillierte Inhalt vonWie kann ich eine einzelne Spalte in einer mehrspaltigen Abfrage 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage