Maison > base de données > tutoriel mysql > Comment puis-je agréger efficacement une seule colonne dans une requête multi-colonnes ?

Comment puis-je agréger efficacement une seule colonne dans une requête multi-colonnes ?

Barbara Streisand
Libérer: 2024-12-20 07:46:10
original
973 Les gens l'ont consulté

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

Agréger une seule colonne dans une requête multi-colonnes

Présentation

Agréger une seule colonne dans une requête avec de nombreuses autres colonnes peut être un défi, en particulier lorsque tous les champs SELECT et ORDER BY doivent être soit agrégés, soit faire partie de GROUP BY. Cette structure de requête détaillée peut devenir lourde à gérer.

Requête simplifiée pour PostgreSQL 9.1

Dans PostgreSQL 9.1 ou version ultérieure, une solution plus simple existe. Lorsque vous utilisez des clés primaires comme critères GROUP BY, la requête peut être rationalisée :

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;
Copier après la connexion

Requête avec plusieurs tables

Pour les requêtes impliquant plusieurs tables avec des relations variables, il est plus efficace d'agréger d'abord les données et rejoignez les tables plus tard :

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 ...
Copier après la connexion

En séparant l'agrégation et la jointure, la majorité de la requête peut éviter une agrégation inutile, réduisant ainsi la complexité et améliorant performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal