

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 쿼리 계획 분석
<a name="c-analyzing-the-query-plan"></a>

[EXPLAIN](r_EXPLAIN.md) 명령을 실행하여 쿼리 계획을 가져온 후

쿼리 계획을 분석하려면 먼저 쿼리 계획을 읽는 방법부터 알아야 합니다. 쿼리 계획을 읽는 방법에 대해서 잘 모르는 경우에는 본 섹션을 진행하기 전에 [쿼리 계획 생성 및 해석](c-the-query-plan.md)부터 읽는 것이 좋습니다.

다음 단계에 따라 쿼리 계획에서 출력되는 데이터를 분석합니다.

1. 비용이 가장 높은 단계를 식별합니다. 나머지 단계를 진행하면서 식별된 단계를 최적화하는 데 집중해야 합니다.

1. 조인 유형을 살펴봅니다.
   + **중첩 루프**: 이 조인이 주로 조인 조건이 생략되었을 때 발생합니다. 권장 솔루션은 [중첩 루프](query-performance-improvement-opportunities.md#nested-loop) 섹션을 참조하세요.
   + **해시 및 해시 조인**: 해시 조인은 조인 열이 분산 키와 정렬 키가 아닌 테이블을 조인할 때 사용됩니다. 권장 솔루션은 [해시 조인](query-performance-improvement-opportunities.md#hash-join) 섹션을 참조하세요.
   + **병합 조인**: 변경할 필요 없습니다.

1. 내부 조인과 외부 조인에 어떤 테이블이 사용되는지 확인합니다. 쿼리 엔진은 일반적으로 작은 테이블을 내부 조인 용도로, 그리고 큰 테이블을 외부 조인 용도로 선택합니다. 이러한 선택과 다르다면 통계가 오랜 시간이 지났을 가능성이 높습니다. 권장 솔루션은 [테이블 통계 누락 또는 만료](query-performance-improvement-opportunities.md#table-statistics-missing-or-out-of-date) 섹션을 참조하세요.

1. 비용이 높은 정렬 작업 유무를 확인합니다. 있을 경우 권장 솔루션은 [정렬되지 않았거나 잘못 정렬된 행](query-performance-improvement-opportunities.md#unsorted-or-mis-sorted-rows) 섹션을 참조하세요.

1. 비용이 높은 작업이 있을 경우 다음과 같은 브로드캐스팅 연산자를 찾습니다.
   + **DS\$1BCAST\$1INNER**: 테이블이 모든 컴퓨팅 노드에 브로드캐스트되는지 나타냅니다. 이는 작은 테이블에는 좋지만 더 큰 테이블에는 이상적이지 않습니다.
   + **DS\$1DIST\$1ALL\$1INNER**: 모든 워크로드가 단일 조각으로 재분산되는 것을 의미합니다.
   + **DS\$1DIST\$1BOTH**: 과다한 재분산을 의미합니다.

   각 상황에 대한 권장 솔루션은 [최적이 아닌 데이터 분산](query-performance-improvement-opportunities.md#suboptimal-data-distribution) 섹션을 참조하세요.