ホームページ > データベース > mysql チュートリアル > 複数列クエリの列を効率的に集計するにはどうすればよいですか?

複数列クエリの列を効率的に集計するにはどうすればよいですか?

DDD
リリース: 2024-12-27 21:32:27
オリジナル
790 人が閲覧しました

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

クエリ内の列を他の多数の列と集計する

結果セット内の複数の列を使用してクエリを実行する場合、単一の列を集計すると、チャレンジ。参照された回答で説明されている方法を使用することもできますが、冗長なクエリが発生する可能性があります。

クエリの簡素化 (PostgreSQL 9.1 以降)

PostgreSQL 9.1 以降より簡単なアプローチを提供します。テーブルの主キーでグループ化すると、GROUP BY 句にすべての列を含めなくても、指定した列を集計できます。

たとえば、サンプル クエリで foo1 が主キーの場合:

SELECT foo1, foo2, foo3, foo4, string_agg(aggregated_field, ', ')
FROM tbl1
GROUP BY 1
ORDER BY foo5, foo6
ログイン後にコピー

複数のテーブルとリレーションシップ

クエリに複数のテーブルが含まれる場合さまざまな関係を考慮すると、多くの場合、最初に集計してから結合する方が効率的です。

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 ...
ログイン後にコピー

集計と結合の操作を分離することで、クエリがより効率的になり、読みやすくなります。

以上が複数列クエリの列を効率的に集計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート