실행 계획 개요
적용 대상: SQL Server Azure SQL 데이터베이스 Azure 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
에 있는 인덱스가 있으면 테이블 검색 대신 인덱스 검색을 수행하여 다른 결과 집합을 저장할 수 있습니다. 테이블이 작은 경우 테이블 검색이 거의 모든 테이블에 액세스하는 가장 효율적인 방법이 될 수 있습니다.계산 컴퓨팅에 사용되는 방법과 각 테이블의 데이터를 필터링, 집계, 정렬하는 방법
테이블에서 데이터에 액세스하는 경우 여러 가지 방법으로 스칼라 값 계산과 같은 데이터에 대한 계산을 수행하고, 쿼리 텍스트에 정의된 대로 데이터를 집계 및 정렬(예:
GROUP BY
또는ORDER BY
절 사용)하며, 데이터를 필터링(예:WHERE
또는HAVING
절 사용)할 수 있습니다.