PostgreSQL에서 각 그룹의 첫 번째 행을 효율적으로 선택
이 가이드에서는 그룹화된 데이터 작업 시 일반적인 작업인 PostgreSQL에서 각 그룹의 가장 빠른 항목을 효율적으로 검색하는 방법을 보여줍니다. 가장 효과적인 방법은 DISTINCT ON
절을 활용하는 것입니다.
DISTINCT ON
조항 활용
PostgreSQL의 DISTINCT ON
절은 지정된 열로 정의된 각 그룹에서 첫 번째 행을 선택하는 간결하고 효율적인 방법을 제공합니다. 구문은 간단합니다.
<code class="language-sql">SELECT DISTINCT ON (column_list) FROM table_name ORDER BY column_list, ...;</code>
예: 각 고객의 첫 번째 구매 식별
purchases
, id
및 customer
열이 있는 total
테이블을 생각해 보세요. 총액이 가장 높은 각 고객의 가장 빠른 구매(id
열 기준)를 찾으려면 다음 쿼리를 사용하세요.
<code class="language-sql">SELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC, id;</code>
중요 고려 사항:
total
열이 NULL 값을 허용하는 경우 NULLS LAST
절에 ORDER BY
을 포함하여 NULL이 아닌 값이 우선순위를 갖도록 하세요.SELECT
목록은 DISTINCT ON
또는 ORDER BY
의 열로 제한되지 않습니다.DISTINCT ON
은 PostgreSQL 전용 확장이며 표준 SQL의 일부가 아닙니다.ORDER BY
절을 적용하세요.인덱싱을 통한 성능 최적화:
(customer, total DESC, id)
에 다중 열 인덱스를 생성하면 특히 고객당 행 수가 상대적으로 적은 경우 쿼리 성능이 크게 향상됩니다.
대규모 데이터 세트를 위한 대체 접근 방식:
고객당 행 수가 많은 데이터 세트의 경우 대체 전략이 더 효율적일 수 있습니다.
total
를 찾은 다음 해당 고객에 대해 최소 id
가 있는 행을 선택합니다.위 내용은 PostgreSQL에서 각 그룹의 가장 빠른 항목을 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!