많은 열이 포함된 쿼리로 작업할 때 단일 열을 효과적으로 집계하는 것이 어려울 수 있습니다. SELECT, GROUP BY 및 ORDER BY 절에 모든 필드를 포함하는 기존 방법으로 충분할 수 있지만 이는 장황한 쿼리로 이어질 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!