Heim > Datenbank > MySQL-Tutorial > Wie kann eine einzelne Spalte in PostgreSQL-Abfragen mit mehreren Spalten effizient aggregiert werden?

Wie kann eine einzelne Spalte in PostgreSQL-Abfragen mit mehreren Spalten effizient aggregiert werden?

Patricia Arquette
Freigeben: 2024-12-31 13:55:08
Original
814 Leute haben es durchsucht

How to Efficiently Aggregate a Single Column in PostgreSQL Queries with Multiple Columns?

So aggregieren Sie eine einzelne Spalte in einer Abfrage mit mehreren zusätzlichen Spalten

In PostgreSQL kann das Aggregieren einer einzelnen Spalte bei gleichzeitiger Einbeziehung anderer Spalten in die Abfrage umständlich sein. Es stehen jedoch Lösungen zur Verfügung.

Verwenden von Group By für Primärschlüssel

PostgreSQL 9.1 und höher vereinfacht den Prozess. Bei der Aggregation mit GROUP BY müssen Sie nur den Primärschlüssel der Tabelle einbeziehen. Wenn also foo1 der Primärschlüssel von tbl1 ist, kann Ihre Abfrage folgendermaßen vereinfacht werden:

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

Aggregation vor dem Beitritt

Bei Abfragen mit mehreren Tabellen und Beziehungen kann dies effizienter sein Zuerst aggregieren und später verbinden. Zum Beispiel:

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

Dadurch wird sichergestellt, dass die Aggregation nur im relevanten Teil der Abfrage erfolgt, wodurch die Leistung verbessert wird.

Das obige ist der detaillierte Inhalt vonWie kann eine einzelne Spalte in PostgreSQL-Abfragen mit mehreren Spalten effizient aggregiert werden?. 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