실행 계획 개요

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

쿼리를 실행하려면 SQL Server 데이터베이스 엔진이 문을 분석하여 필요한 데이터에 액세스하고 처리하는 효율적인 방법을 결정해야 합니다. 이 분석은 쿼리 최적화 프로그램이라는 구성 요소에 의해 처리됩니다. 쿼리 최적화 프로그램의 입력은 쿼리, 데이터베이스 스키마(테이블 및 인덱스 정의) 및 데이터베이스 통계로 구성됩니다. 쿼리 최적화 프로그램은 쿼리 계획 또는 실행 계획이라고도 하는 하나 이상의 쿼리 실행 계획을 빌드합니다. 쿼리 최적화 프로그램은 적절한 쿼리 계획을 찾기 위해 추론 집합을 사용하여 컴파일 시간과 계획 최적의 균형을 맞추는 쿼리 계획을 선택합니다.

쿼리 처리 및 쿼리 실행 계획에 대한 자세한 내용은 SELECT 문 최적화 섹션과 쿼리 처리 아키텍처 가이드의 실행 계획 캐싱 및 재사용 섹션을 참조하세요.

SQL Server Management Studio 및 Azure Data Studio에서 실행 계획을 보는 방법에 대한 자세한 내용은 실행 계획 표시 및 저장을 참조하세요.

쿼리 실행 계획은 다음의 정의입니다.

  • 원본 테이블이 액세스되는 순서

    일반적으로 데이터베이스 서버가 기본 테이블에 액세스하여 결과 집합을 빌드할 수 있는 많은 시퀀스가 있습니다. 예를 들어 SELECT 문이 세 개의 테이블을 참조하는 경우 데이터베이스 서버는 먼저 TableA에 액세스하고, TableA의 데이터를 사용하여 TableB에서 일치하는 행을 추출한 후 TableB의 데이터를 사용하여 TableC에서 데이터를 추출합니다. 다음은 데이터베이스 서버가 테이블에 액세스할 수 있는 여러 순서입니다.
    TableC, TableB, TableA또는
    TableB, TableA, TableC또는
    TableB, TableC, TableA또는
    TableC, TableA, TableB

  • 각 테이블에서 데이터를 추출하는 데 사용되는 메서드입니다.

    일반적으로 각 테이블의 데이터에 액세스하는 방법에는 여러 가지가 있습니다. 특정 키 값을 가진 몇몇 행만 필요한 경우 데이터베이스 서버는 인덱스를 사용할 수 있습니다. 테이블의 모든 행이 필요한 경우 데이터베이스 서버는 인덱스를 무시하고 테이블을 검색할 수 있습니다. 테이블의 모든 행이 필요하지만 키 열이 있는 ORDER BY인덱스가 있는 경우 테이블 검색 대신 인덱스 검색을 수행하면 별도의 결과 집합이 저장될 수 있습니다. 테이블이 작으면 테이블 검색이 거의 모든 테이블에 액세스하는 가장 효율적인 방법이 될 수 있습니다.

  • 계산 컴퓨팅에 사용되는 방법과 각 테이블의 데이터를 필터링, 집계, 정렬하는 방법

    테이블에서 데이터에 액세스하는 경우 스칼라 값 계산과 같은 데이터에 대한 계산을 수행하고 쿼리 텍스트에 정의된 대로 데이터를 집계 및 정렬하는 방법(예: or ORDER BY 절을 사용하는 GROUP BY 경우) 및 데이터를 필터링하는 방법(예: or HAVING 절 사용 WHERE 시)이 있습니다.

참고 항목

다음 단계