首頁 >資料庫 >mysql教程 >如何有效率地聚合複雜SQL查詢中的單列?

如何有效率地聚合複雜SQL查詢中的單列?

DDD
DDD原創
2024-12-25 18:07:20971瀏覽

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

在複雜查詢中聚合單列

在處理包含大量列的查詢時,有效聚合單一列可能具有挑戰性。雖然在 SELECT、GROUP BY 和 ORDER BY 子句中包含所有欄位的傳統方法可能就足夠了,但它可能會導致冗長的查詢。

PostgreSQL 9.1 的更簡單替代方案

如果您使用 PostgreSQL 9.1 或更高版本,則有更簡單的方法。由於您指定了foo1 作為主鍵,您可以如下簡化查詢:

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

多表查詢先聚合,然後加入

但是,在處理多個表時表和更複雜的關係,先聚合後連線可能會更有效。考慮這個修改後的查詢:

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 ...

透過單獨聚合和連接,您可以避免大多數查詢不必要的聚合開銷。

以上是如何有效率地聚合複雜SQL查詢中的單列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn