首页 >数据库 >mysql教程 >如何高效聚合复杂SQL查询中的单列?

如何高效聚合复杂SQL查询中的单列?

DDD
DDD原创
2024-12-25 18:07:20970浏览

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