논리 및 물리적 실행 계획 연산자 참조

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

연산자는 SQL Server가 쿼리 또는 DML(데이터 조작 언어) 문을 실행하는 방법을 설명합니다. 쿼리 최적화 프로그램은 연산자를 사용하여 쿼리 계획을 작성하여 쿼리에 지정된 결과를 만들거나 DML 문에 지정된 작업을 수행합니다. 쿼리 계획은 물리 연산자로 구성된 트리입니다. 문, SQL Server Management Studio의 SET SHOWPLAN 그래픽 실행 계획 옵션 또는 확장 이벤트 실행 계획 이벤트를 사용하여 쿼리 계획을 볼 수 있습니다.

연산자는 논리 및 물리 연산자로 분류됩니다.

논리 연산자

논리 연산자는 문을 처리할 때 사용되는 관계형 대수 연산을 설명합니다. 즉, 논리 연산자는 수행해야 하는 작업을 개념적으로 설명합니다.

물리 연산자

물리 연산자는 논리 연산자가 설명하는 연산을 구현합니다. 각 물리 연산자는 작업을 수행하는 개체 또는 루틴입니다. 예를 들어 일부 물리 연산자는 테이블, 인덱스 또는 뷰에서 열 또는 행에 액세스합니다. 다른 물리 연산자는 계산, 집계, 데이터 무결성 검사 또는 조인과 같은 작업을 수행합니다. 물리 운영자는 관련 비용이 있습니다.

물리 연산자는 초기화, 데이터 수집 및 닫습니다. 특히 물리 연산자는 다음 세 가지 메서드 호출에 응답할 수 있습니다.

  • Open(): 이 Open() 메서드는 물리 연산자가 자신을 초기화하고 필요한 모든 데이터 구조를 설정하도록 합니다. 물리 연산자는 많은 Open() 호출을 받을 수 있지만 일반적으로 하나만 수신합니다.

  • GetRow(): 이 GetRow() 메서드를 사용하면 물리 연산자가 데이터의 첫 번째 행 또는 후속 행을 가져옵니다. 물리 연산자는 0개 또는 많은 GetRow() 호출을 받을 수 있습니다.

  • Close(): 이 Close() 메서드는 물리 연산자가 일부 클린 작업을 수행하고 자체를 종료하도록 합니다. 물리 연산자는 하나의 Close() 호출만 수신하지만 호출이 Close() 항상 보장되는 것은 아닙니다.

이 메서드는 GetRow() 한 행의 데이터를 반환하며, 호출되는 횟수는 그래픽 및 XML 실행 계획에서 생성되는 실행 계획 출력에 ActualRows표시됩니다. 이러한 SET 옵션에 대한 자세한 내용은 SET STATISTICS PROFILE(Transact-SQL)SET STATISTICS XML(Transact-SQL)을 참조하세요.

실행 계획 출력에 표시되는 ActualRebindsActualRewinds 수는 메서드가 호출된 Open() 횟수를 나타냅니다. 연산자가 중첩 루프 조 인의 안쪽에 있지 않으면 ActualRebinds는 1이고 ActualRewinds는 0과 같습니다. 연산자가 루프 조인의 안쪽에 있는 경우 총 리빈드 및 되감기 수는 조인의 바깥쪽에서 처리된 행 수와 같아야 합니다. 다시 바인딩은 조인의 상관 관계가 있는 매개 변수 중 하나 이상이 변경되고 내부 쪽을 다시 평가해야 임을 의미합니다. 되감기란 상관 관계가 있는 매개 변수가 변경되지 않았으며 이전 내부 결과 집합이 재사용될 수 있음을 의미합니다.

ActualRebindsActualRewinds 는 사용 및 그래픽 실행 계획을 사용하여 SET STATISTICS XML ON 생성된 XML 실행 계획 출력에 있습니다. 비클러스터형 인덱스 스풀, 원격 쿼리, 행 개수 스풀, 정렬, 테이블 스풀테이블 반환 함수 연산자만 채워집니다. StartupExpression 특성이 TRUE로 설정된 경우에도 Assert 및 Filter 연산자의 ActualRebinds ActualRewinds가 채워질 수 있습니다.

ActualRebinds 및 ActualRewinds가 XML 쇼플랜에 있는 경우 EstimateRebinds 및 EstimateRewinds비슷합니다. 없는 경우 예상 행 수(EstimateRows)는 실제 행 수(ActualRows)와 비슷합니다. 실제 그래픽 실행 계획 출력은 실제 리바인드에 대해 0을 표시하고 실제 되감기(없는 경우)를 표시합니다.

관련 카운터인 ActualEndOfScans는 XML 및 그래픽 실행 계획에서 사용할 수 있습니다. 물리 연산자가 데이터 스트림의 끝에 도달할 때마다 이 카운터는 하나씩 증가합니다. 물리 연산자는 데이터 스트림의 끝에 도달하지 않거나 1회 이상 여러 번 도달할 수 있습니다. 다시 바인딩 및 되감기와 마찬가지로, 연산자가 루프 조인의 내부 쪽에 있는 경우에만 검사 수가 둘 이상일 수 있습니다. 검사 수의 끝은 리빈드 및 되감기 수의 합계보다 작거나 같아야 합니다.

실제 및 논리 연산자 매핑

쿼리 최적화 프로그램은 쿼리 계획을 논리 연산자로 이루어진 트리로 만듭니다. 쿼리 최적화 프로그램은 쿼리 계획을 만든 다음 각 논리 연산자에 대해 가장 효율적인 물리 연산자를 선택합니다. 쿼리 최적화 프로그램은 비용 기반 접근 방식을 사용하여 논리 연산자를 구현하는 물리 연산자를 결정합니다.

일반적으로 여러 물리 연산자가 하나의 논리 연산자를 구현할 수 있습니다. 그러나 드문 경우에서 물리 연산자도 여러 논리 연산을 구현할 수 있습니다.

일괄 처리 모드 실행

일괄 처리 모드 실행은 한 번에 한 행이 아닌 여러 행(따라서 용어 일괄 처리)을 함께 처리하는 데 사용되는 쿼리 처리 방법입니다. 일괄 처리 모드 처리는 다중 코어 CPU에 최적화된 알고리즘과 최신 하드웨어의 메모리 처리량 증가를 사용합니다. 일괄 처리 모드는 rowstore 및 columnstore 개체 모두에 대한 연산자 집합에서 사용할 수 있습니다. 자세한 내용은 쿼리 처리 아키텍처 가이드를 참조 하세요.

연산자 설명

이 섹션에서는 논리 및 물리 연산자에 대해 설명합니다. SSMS(SQL Server Management Studio) 및 Azure Data Studio의 쿼리 계획 보기에서 속성 창을 사용하여 쿼리 계획 및 연산자의 속성을 볼 수 있습니다.

지정된 그래픽 실행 계획 아이콘에 오른쪽에서 왼쪽으로 두 개의 화살표가 있는 노란색 원이 있을 때마다 연산자가 병렬로 실행되었음을 의미합니다. 병렬 처리에 대한 자세한 내용은 스레드 및 태스크 아키텍처 가이드를 참조하세요.

Icon Showplan 연산자 설명
적응형 조인 적응 조인 연산자를 사용하면 첫 번째 입력이 검사될 때까지 해시 조인 또는 중첩 루프 조인 메서드를 선택할 수 있습니다.

적응 조 인은 물리 연산자입니다. 자세한 내용은 적응 조인 이해를 참조 하세요.
Aggregate Aggregate 연산자는 , MAX, SUMCOUNT또는 AVG.를 MIN포함하는 식을 계산합니다.

집계 는 논리 및 물리 연산자입니다.
산술 식 산술 식 연산자는 행의 기존 값에서 새 값을 계산합니다. 산술 식 은 최신 버전의 SQL Server에서 사용되지 않습니다.
Assert Assert 연산자는 조건을 확인합니다. 예를 들어 참조 무결성을 확인하거나 스칼라 하위 쿼리에서 한 개의 행을 반환하게 합니다. 각 입력 행에 대해 Assert 연산자는 실행 계획의 속성 창에서 식을 평가합니다. 이 식이 NULL계산되면 행이 Assert 연산자를 통해 전달되고 쿼리 실행이 계속됩니다. 이 식이 null이 아닌 값으로 평가되면 적절한 오류가 발생합니다.

Assert 는 물리 연산자입니다.
할당 Assign 연산자는 식 또는 상수의 값을 변수에 할당합니다.

할당 은 언어 요소입니다.
없음 비동기 Concat 비동기 Concat 연산자는 원격 쿼리(분산 쿼리)에서만 사용됩니다. 여기에는 n식 및 하나의 부모 노드가 있습니다. 일반적으로 일부 자식은 분산 쿼리에 참여하는 원격 컴퓨터입니다. 비동기 Concat 은 모든 자식에 대한 호출을 동시에 발급 Open() 한 다음 각 자식에 비트맵을 적용합니다. 각 비트에 대해 Async Concat1요청 시 출력 행을 부모 노드로 보냅니다.
Bitmap SQL Server는 비트맵 연산자를 사용하여 병렬 쿼리 계획에서 비트맵 필터링을 구현합니다. 비트맵 필터링은 병렬 처리 연산자 같은 다른 연산자를 통해 행을 전달하기 전에 조인 레코드를 생성할 수 없는 키 값이 있는 행을 제거하여 쿼리 실행 속도를 향상합니다. 비트맵 필터는 연산자 트리의 한 부분에 있는 테이블의 값 집합을 간결하게 표현하여 트리의 다른 부분에 있는 두 번째 테이블의 행을 필터링합니다. 쿼리 초기에 불필요한 행을 제거하면 후속 연산자는 작업할 행 수가 줄어들고 쿼리의 전반적인 성능이 향상됩니다. 최적화 프로그램은 비트맵이 유용할 만큼 선택적인 시기와 필터를 적용할 연산자를 결정합니다.

비트맵 은 물리 연산자입니다.
비트맵 만들기 비트맵 만들기 연산자는 비트맵이 빌드되는 실행 계획 출력에 나타납니다.

Bitmap Create 는 논리 연산자입니다.
없음 분기 다시 분할 병렬 쿼리 계획에는 반복자라는 개념 영역이 존재하기도 합니다. 이러한 지역 내의 모든 반복기는 병렬 스레드에서 실행할 수 있습니다. 영역 자체는 직렬로 실행되어야 합니다. 개별 지역 내의 일부 병렬 처리 반복기를 분기 다시 분할이라고 합니다. 이러한 두 영역의 경계에 있는 병렬 처리 반복기를 세그먼트 다시 분할이라고 합니다.

Branch RepartitionSegment Repartition 은 논리 연산자입니다.
방송 브로드캐스트 에는 하나의 자식 노드와 n 개의 부모 노드가 있습니다. 브로드캐 스트는 요청 시 여러 소비자에게 입력 행을 보냅니다. 각 소비자는 모든 행을 가져옵니다. 예를 들어 모든 소비자가 해시 조 인의 빌드 측면인 경우 해시 테이블의 n 복사본이 빌드됩니다.
빌드 해시 메모리 최적화 columnstore 인덱스의 일괄 처리 해시 테이블 빌드를 나타냅니다.

적용 대상: SQL Server 2012(11.x)만.
클러스터형 인덱스 삭제 Clustered Index Delete 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 클러스터형 인덱스에서 행을 삭제합니다. SeekPredicate 또는 조건자가 있는 경우 조건자를 충족하는 행만 삭제됩니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

클러스터형 인덱스 삭제 는 물리 연산자입니다.
클러스터형 인덱스 삽입 Clustered Index Insert 연산자는 입력의 행을 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 클러스터형 인덱스에 삽입합니다. XML 실행 계획에는 SetPredicateColumnReference 속성이 포함되어 있으며, 각 열이 설정된 값을 결정하는 데 사용할 수 있습니다. 클러스터형 인덱스 삽입에 삽입 값에 대한 자식이 없는 경우 삽입된 행은 Insert 연산자 자체에서 가져옵니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

클러스터형 인덱스 삽입 은 물리 연산자입니다.
Clustered Index Merge 클러스터형 인덱스 병합 연산자는 병합 데이터 스트림을 클러스터형 인덱스에 적용합니다. 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 클러스터형 인덱스에서 행을 삭제, 업데이트 또는 삽입합니다. 수행되는 실제 작업은 ActionColumn 속성의 런타임 값에 따라 달라집니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

클러스터형 인덱스 병합 은 물리 연산자입니다.
Clustered Index Scan Clustered Index Scan 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 클러스터형 인덱스를 검색합니다. 선택적 조건 자가 있으면 조건자를 충족하는 행만 반환됩니다. 속성 창 또는 XML 실행 계획에서 Ordered 속성이 True면 쿼리 프로세서는 클러스터형 인덱스가 정렬한 순서대로 행을 반환해야 한다고 결정했습니다. Ordered 속성이 False면 데이터베이스 엔진 출력을 정렬하지 않고 최적의 방법으로 인덱스를 검색합니다.

클러스터형 인덱스 검사는 논리 및 물리 연산자입니다.
클러스터형 인덱스 검색 Clustered Index Seek 연산자는 인덱스의 검색 기능을 사용하여 클러스터형 인덱스에서 행을 검색합니다. 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에는 사용 중인 클러스터형 인덱스의 이름이 포함됩니다. SeekPredicate에는 검색에 대한 조건자가 포함됩니다. 데이터베이스 엔진 인덱스를 사용하여 SeekPredicate를 충족하는 행만 처리합니다. 또한 seekPredicate충족하는 모든 행에 대해 데이터베이스 엔진 평가하는 조건자 속성을 포함할 수도 있지만 이는 선택 사항이며 인덱스를 사용하여 이 프로세스를 완료하지 않습니다.

속성 창 또는 XML 실행 계획에서 Ordered 속성이 True면 쿼리 프로세서는 클러스터형 인덱스가 정렬한 순서대로 행을 반환해야 한다고 결정했습니다. Ordered 속성이 False면 데이터베이스 엔진 출력을 정렬하지 않고 최적의 방법으로 인덱스 검색을 합니다. 순서를 유지하기 위해 출력을 요구하는 것은 정렬되지 않은 출력을 생성하는 것보다 덜 효율적일 수 있습니다.

클러스터형 인덱스 검색 은 논리 및 물리 연산자입니다.
클러스터형 인덱스 업데이트 Clustered Index Update 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 클러스터형 인덱스의 입력 행을 업데이트합니다. 조건자 속성이 있는 경우 이 조건자를 충족하는 행만 업데이트됩니다. SetPredicate 속성이 있으면 업데이트된 각 열이 이 값으로 설정됩니다. DefineValue 속성이 있으면 이 연산자가 정의하는 값이 나열됩니다. 이러한 값은 절 또는 이 연산자 내의 SET 다른 위치 및 이 쿼리 내의 다른 위치에서 참조될 수 있습니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

클러스터형 인덱스 업데이트 는 논리 및 물리 연산자입니다.
축소 Collapse 연산자는 업데이트 처리를 최적화합니다. 업데이트가 수행되면 분할 연산자를 사용하여 삭제 및 삽입으로 분할할 수 있습니다. 속성 창에는 키 열 목록을 지정하는 조건자별 그룹이 포함됩니다. 쿼리 프로세서에서 동일한 키 값을 삭제하고 삽입하는 인접한 행이 발견되면 이러한 개별 작업을 보다 효율적인 단일 업데이트 작업으로 바꿉니다.

Collapse 은 논리 및 물리 연산자입니다.
Columnstore 인덱스 삭제 Columnstore Index Delete 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 columnstore 인덱스에서 행의 삭제를 나타냅니다. 삭제는 클러스터형 columnstore 인덱스에 대한 클러스터형 인덱스 삭제 및 비클러스터형 columnstore 인덱스에 대한 Index Delete 연산자를 통해 발생합니다. 인덱스 형식(Clustered, NonClustered 또는 ViewNonClustered)은 XML 실행 계획에서 IndexKind 속성에 지정됩니다. Columnstore 인덱스 삭제에는 SeekPredicate가 지원되지 않습니다. 삭제할 행은 자식 연산자에서 읽습니다.

Columnstore 인덱스 삭제 는 물리 연산자입니다.
Columnstore 인덱스 삽입 Columnstore Index Insert 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 개체 속성에 지정된 columnstore 인덱스에 입력된 행의 삽입을 나타냅니다. 삽입은 클러스터형 columnstore 인덱스에 대한 클러스터형 인덱스 삽입 및 비클러스터형 columnstore 인덱스에 대한 Index Insert 연산자를 통해 수행됩니다. 인덱스 형식(Clustered, NonClustered 또는 ViewNonClustered)은 XML 실행 계획에서 IndexKind 속성에 지정됩니다. XML 실행 계획에는 SetPredicateColumnReference 속성이 포함되어 있으며, 각 열이 설정된 값을 결정하는 데 사용할 수 있습니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

Columnstore 인덱스 삽입 은 물리 연산자입니다.
Columnstore 인덱스 병합 Columnstore 인덱스 병합클러스터형 인덱스 병합 연산자를 사용하여 병합 데이터 스트림의 애플리케이션을 나타냅니다. 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 개체 속성에 지정된 클러스터형 columnstore 인덱스에서 행을 삭제, 업데이트 또는 삽입합니다. 수행되는 실제 작업은 ActionColumn 속성의 런타임 값에 따라 달라집니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

Columnstore 인덱스 병합 은 물리 연산자입니다.
Columnstore 인덱스 검사 Columnstore Index Scan 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 columnstore 인덱스의 검색을 나타냅니다. 검색은 클러스터형 columnstore 인덱스에 대한 클러스터형 인덱스 검색 및 비클러스터형 columnstore 인덱스에 대한 Index Scan 연산자를 통해 수행됩니다. 인덱스 형식(Clustered, NonClustered 또는 ViewNonClustered)은 XML 실행 계획에서 IndexKind 속성에 지정됩니다. 선택적 조건 자가 있으면 조건자를 충족하는 행만 반환됩니다. SeekPredicate 속성은 분할된 columnstore 인덱스만 사용할 수 있으며 같거나 같지 않은 조건만 사용할 수 있습니다. 분할된 열이 쿼리 조건자인 경우 파티션 제거는 검색할 행 그룹의 수를 줄일 수 있습니다.

Columnstore Index Scan 은 물리 연산자입니다.
Columnstore 인덱스 업데이트 Columnstore 인덱스 업데이트 연산자는 그래픽 및 XML 실행 계획의 속성 창에 나열된 Object 속성에 지정된 columnstore 인덱스에 있는 하나 이상의 행에 대한 업데이트를 나타냅니다. 업데이트클러스터형 columnstore 인덱스 및 비클러스터형 columnstore 인덱스 인덱스 인덱스 업데이트 연산자를 통한 클러스터형 인덱스 업데이트 연산자입니다. 인덱스 형식(Clustered, NonClustered 또는 ViewNonClustered)은 XML 실행 계획에서 IndexKind 속성에 지정됩니다. Columnstore 인덱스 업데이트에는 SeekPredicate가 지원되지 않습니다. 업데이트할 행은 자식 연산자에서 읽습니다. SetPredicate 속성이 있으면 업데이트된 각 열이 이 값으로 설정됩니다. DefineValue 속성이 있으면 이 연산자가 정의하는 값이 나열됩니다. 이러한 값은 절 또는 이 연산자 내의 SET 다른 위치 및 이 쿼리 내의 다른 위치에서 참조될 수 있습니다.

참고: 클러스터형 인덱스를 변경하면 비클러스터형 인덱스에 영향을 줄 수 있습니다.

Columnstore 인덱스 업데이트 는 물리 연산자입니다.
Compute Scalar Compute Scalar 연산자는 식을 평가하여 계산된 스칼라 값을 생성합니다. 그러면 사용자에게 반환되거나, 쿼리의 다른 위치에서 참조되거나, 둘 다 반환될 수 있습니다. 둘 다의 예는 필터 조건자 또는 조인 조건자입니다.

생성된 SET STATISTICS XML 실행 계획에 표시되는 컴퓨팅 스칼라 연산자는 RunTimeInformation 요소를 포함하지 않을 수 있습니다. SQL Server Management Studio에서 실제 실행 계획 포함 옵션을 선택하면 그래픽 실행 계획에서 실제 행, 실제 다시 바인딩실제 되감기는 속성에 없을 수 있습니다. 이 경우 이러한 연산자가 컴파일된 쿼리 계획에서 사용되었지만 런타임 쿼리 계획의 다른 연산자가 해당 작업을 수행했음을 의미합니다. 생성된 SET STATISTICS PROFILE 실행 계획 출력의 실행 수는 생성된 실행 계획 SET STATISTICS XML에서 다시 바인딩 및 되감기의 합계와 같습니다.

Compute Scalar 는 논리 및 물리 연산자입니다.
Concatenation 연결 연산자는 여러 입력을 검색하여 검색된 각 행을 반환합니다. 연결 은 일반적으로 Transact-SQL UNION ALL 구문을 구현하는 데 사용됩니다. 연결 물리 연산자에는 둘 이상의 입력과 하나의 출력이 있습니다. Concatenation은 첫 번째 입력 스트림에서 출력 스트림으로 행을 복사한 다음 이 연산을 각 추가 입력 스트림에 대해 반복합니다.

Concatenation 은 논리 및 물리 연산자입니다.
조건부(IfWhile) 조건부 연산자는 또는 WHILE 루프를 기반으로 IF 조건부 처리를 수행합니다. IfWhile 는 언어 요소입니다.
상수 검사 Constant Scan 연산자는 하나 이상의 상수 행을 쿼리에 도입합니다. Compute Scalar 연산자는 Constant Scan 연산자가 생성한 행에 열을 추가하기 위해 Constant Scan 후에 자주 사용됩니다. 상수 검사는 열이 0개 이상인 하나 이상의 행을 생성할 수 있습니다.
변환 Convert 연산자는 한 스칼라 데이터 형식을 다른 스칼라 데이터 형식으로 변환합니다.

Convert 는 언어 요소입니다.
Cross Join 교차 조인 연산자는 첫 번째(맨 위) 입력의 각 행을 두 번째(아래쪽) 입력의 각 행과 조인합니다.

교차 조 인은 논리 연산자입니다.
Cursor Cursor 논리 및 물리 연산자는 커서 작업이 수반되는 쿼리 또는 업데이트가 실행되는 방식을 설명하기 위해 사용합니다. 물리 연산자는 커서를 처리하는 데 사용하는 물리적 구현 알고리즘(예: 키 집합 커서의 사용)을 설명합니다. 커서 실행의 각 단계마다 물리 연산자가 수반됩니다. 논리 연산자는 커서가 읽기 전용인 것처럼 커서의 속성을 설명합니다.

논리 연산자는 비동기, 낙관적, 기본, 읽기 전용, 스크롤 잠금, 보조동기를 포함합니다.

물리 연산자는 동적, 페치 쿼리, 키 집합, 채우기 쿼리, 새로 고침 쿼리 및 스냅샷포함합니다.
Declare Declare 연산자는 쿼리 계획에 지역 변수를 할당합니다.

Declare 는 언어 요소입니다.
Delete Delete 연산자는 속성 창에서 선택적 조건자를 충족하는 행(개체에서)을 삭제합니다.
삭제된 검사 트리거에서 Deleted Scan 연산자는 삭제된 테이블을 검색합니다.
없음 Distinct Distinct 연산자는 행 집합 또는 값 컬렉션에서 중복 요소를 제거합니다.

Distinct 는 논리 연산자입니다.
없음 고유 정렬 Distinct Sort 논리 연산자는 입력을 검사하여 중복 항목을 제거하고 속성 창의 조건자에 따라 고유 순서로 지정된 열을 기준으로 정렬합니다.

Distinct Sort 는 논리 연산자입니다.
배포 스트림 Distribute 스트림 연산자는 병렬 쿼리 계획에서만 사용됩니다. Distribute 스트림 연산자는 레코드의 단일 입력 스트림을 사용하고 여러 출력 스트림을 생성합니다. 레코드 내용과 형식은 변경되지 않습니다. 입력 스트림의 각 레코드는 출력 스트림 중 하나에 표시됩니다. 이 연산자는 출력 스트림에서 입력 레코드의 상대 순서를 자동으로 유지합니다. 일반적으로 해시는 특정 입력 레코드가 속한 출력 스트림을 결정하는 데 사용됩니다.

출력이 분할된 경우 속성 창에는 파티션 열 조건자와 분할 열이 포함됩니다.

배포 스트림 논리 연산자입니다.
동적 Dynamic 연산자는 다른 커서가 변경한 모든 내용을 볼 수 있는 커서를 사용합니다.
Eager Spool Eager Spool 연산자는 전체 입력을 사용하여 tempdb 데이터베이스에 저장된 숨겨진 임시 개체에 각 행을 저장합니다. 연산자가 다시 해제(예 : 중첩 루프 연산자)이지만 다시 바인딩이 필요하지 않은 경우 스풀링된 데이터는 입력을 다시 검사하는 대신 사용됩니다. 다시 바인딩이 필요한 경우 스풀링된 데이터가 dis카드ed이고 스풀 개체는 (리바운드) 입력을 다시 검사하여 다시 작성됩니다. Eager Spool 연산자는 "신속하게" 스풀 파일을 만듭니다. 스풀의 부모 연산자가 첫 번째 행을 요청하면 스풀 연산자는 입력 연산자로부터 모든 행을 받아 스풀에 저장합니다.

Eager Spool 은 논리 연산자입니다.
쿼리 가져오기 Fetch Query 연산자는 커서에 대해 인출이 실행될 때 행을 검색합니다.
Filter 필터 연산자는 입력을 검색하여 속성 창에 나타나는 필터 식(조건자)을 충족하는 행만 반환합니다.
없음 Flow Distinct Flow Distinct 연산자는 입력을 검사하여 중복 항목을 제거합니다. Distinct 연산자는 출력을 생성하기 전에 모든 입력을 사용하는 반면 Flow Distinct 연산자는 입력에서 가져온 각 행을 반환합니다(해당 행이 중복되지 않는 한, 이 경우 dis카드ed).

Flow Distinct 는 논리 연산자입니다.
외래 키 참조 확인 외래 키 참조 검사 연산자는 수정된 행을 참조 테이블의 행과 비교하여 수정이 참조 무결성을 손상하지 않는지 확인하여 참조 무결성 검사 수행합니다. Foreign Key References Check 연산자는 동일한 기본 또는 고유 키에 253개 이상의 외래 키 참조가 있을 때 사용됩니다.

외래 키 참조 검사는 논리 및 물리 연산자입니다.
전체 외부 조인 Full Outer Join 논리 연산자는 두 번째(최하위) 입력의 각 행과 조인된 첫 번째(최상위) 입력의 조인 조건자에 부합되는 각 행을 반환합니다. 또한 다음에서 행을 반환합니다.

- 두 번째 입력에서 일치하는 항목이 없는 첫 번째 입력입니다.

- 첫 번째 입력에 일치하는 항목이 없는 두 번째 입력입니다.

일치하는 값을 포함하지 않는 입력은 null 값으로 반환됩니다.

Full Outer Join 는 논리 연산자입니다.
스트림 수집 Gather 스트림 연산자는 병렬 쿼리 계획에서만 사용됩니다. Gather Streams 연산자는 몇 개의 입력 스트림을 사용하고 해당 입력 스트림을 결합하여 레코드의 단일 출력 스트림을 만듭니다. 레코드 내용과 형식은 변경되지 않습니다. 이 연산자가 순서를 유지하는 경우 모든 입력 스트림을 정렬해야 합니다. 출력이 정렬되면 속성 창에는 조건자별 순서와 정렬되는 열의 이름이 포함됩니다.

Gather 스트림 논리 연산자입니다.
Hash Match 해시 일치 연산자는 빌드 입력에서 각 행에 대한 해시 값을 계산하여 해시 테이블을 빌드합니다. 해시 값을 만드는 데 사용되는 열 목록이 있는 해시 조건자가 속성 창에 나타납니다. 그런 다음 각 프로브 행(해당하는 경우)에 대해 해시 값을 계산하고(동일한 해시 함수 사용) 해시 테이블에서 일치하는 항목을 찾습니다. 잔차 조건자가 있는 경우(속성 창에서 식별됨RESIDUAL:()) 행이 일치하는 것으로 간주되려면 해당 조건자도 충족해야 합니다. 동작은 수행 중인 논리 작업에 따라 달라집니다.

- 모든 조인의 경우 첫 번째(위쪽) 입력을 사용하여 해시 테이블을 빌드하고 두 번째(아래쪽) 입력을 사용하여 해시 테이블을 검색합니다. 출력은 조인 유형에 따라 결정되는 것과 일치(또는 비매치)입니다. 여러 조인이 동일한 조인 열을 사용하는 경우 이러한 작업은 해시 팀으로 그룹화됩니다.

- 고유 연산자 또는 집계 연산자의 경우 입력을 사용하여 해시 테이블을 작성합니다(중복 항목 제거 및 집계 식 계산). 해시 테이블이 빌드되면 테이블을 스캔하고 모든 항목을 출력합니다.

- Union 연산자의 경우 첫 번째 입력을 사용하여 해시 테이블을 빌드합니다(중복 제거). 두 번째 입력(중복 항목이 없어야 합니다)을 사용하여 해시 테이블을 검색하고 일치하는 행이 없는 모든 행을 반환한 다음, 해시 테이블을 검색하고 모든 항목을 반환합니다.

Hash Match 는 물리 연산자입니다. 자세한 내용은 해시 조인 이해를 참조 하세요.
인덱스 삭제 Index Delete 연산자는 속성 창에 지정된 비클러스터형 인덱스에서 행을 삭제합니다.

인덱스 삭제 는 물리 연산자입니다.
인덱스 삽입 Index Insert 연산자는 해당 입력의 행을 속성 창에 지정된 비클러스터형 인덱스에 삽입합니다. 속성 창에는 각 열이 설정된 값을 나타내는 집합 조건자도 포함되어 있습니다.

인덱스 삽입 은 물리 연산자입니다.
인덱스 검사 Index Scan 연산자는 속성 창에 지정된 비클러스터형 인덱스에서 모든 행을 검색합니다. 조건자가 속성 창에 표시되는 선택적 경우 조건자를 충족하는 행만 반환됩니다.

인덱스 스캔 은 논리 및 물리 연산자입니다.
인덱스 검색 Index Seek 연산자는 인덱스의 검색 기능을 사용하여 비클러스터형 인덱스에서 행을 검색합니다. 속성 창에는 사용 중인 비클러스터형 인덱스의 이름이 포함됩니다. 또한 검색 조건자를 포함합니다. 데이터베이스 엔진 인덱스를 사용하여 검색 조건자를 충족하는 행만 처리합니다. 필요에 따라 검색 조건자를 충족하는 모든 행에 대해 데이터베이스 엔진 평가하는 where 조건자를 포함할 수 있습니다(인덱스를 사용하여 이 작업을 수행하지 않음). 속성 창에 절이 포함된 ORDERED 경우 쿼리 프로세서는 비클러스터형 인덱스가 정렬한 순서대로 행을 반환해야 한다고 결정했습니다. 절이 ORDERED 없으면 데이터베이스 엔진 최적의 방법으로 인덱스 검색(출력이 정렬되지 않음)을 검색합니다. 출력이 순서를 유지하도록 허용하는 것은 정렬되지 않은 출력을 생성하는 것보다 덜 효율적일 수 있습니다.

Index Seek 은 논리 및 물리 연산자입니다.
인덱스 스풀 Index Spool 연산자는 속성 창에 검색 조건자를 포함합니다. Index Spool 연산자는 입력 행을 검색하여 숨겨진 스풀 파일에 각 행의 복사본을 배치하고(tempdb 데이터베이스저장되고 쿼리의 수명 동안만 기존) 행에 비클러스터형 인덱스를 작성합니다. 이렇게 하면 인덱스의 검색 기능을 사용하여 검색 조건자를 충족하는 행만 출력할 수 있습니다. 연산자가 다시 해제(예 : 중첩 루프 연산자)이지만 다시 바인딩이 필요하지 않은 경우 스풀링된 데이터는 입력을 다시 검사하는 대신 사용됩니다.

인덱스 스풀 은 물리 연산자입니다.
인덱스 업데이트 인덱스 업데이트 물리 연산자는 속성 창에 지정된 비클러스터형 인덱스의 입력에서 행을 업데이트합니다. 집합 조건자가 있으면 업데이트된 각 열이 이 값으로 설정됩니다.

인덱스 업데이트 는 물리 연산자입니다.
내부 조인 내부 조인 연산자는 두 번째(아래쪽) 입력을 사용하여 첫 번째(위쪽) 입력의 조인 조건자를 충족하는 각 행을 반환합니다.

내부 조 인은 논리 연산자입니다.
삽입 Insert 연산자는 입력의 각 행을 속성 창에 지정된 개체에 삽입합니다. 물리 연산자는 테이블 삽입, 인덱스 삽입 또는 클러스터형 인덱스 삽입 연산자입니다.

Insert 는 논리 연산자입니다.
삽입된 검사 트리거에서 Inserted Scan 연산자는 삽입된 테이블을 검색합니다.

Inserted Scan 은 논리 및 물리 연산자입니다.
Intrinsic 내장 연산자는 내부 Transact-SQL 함수를 호출합니다.

내장 언어는 언어 요소입니다.
Iterator 반복기에 적합한 아이콘을 그래픽 실행 계획을 생성하는 논리에서 찾을 수 없는 경우 반복기 catchall 아이콘이 표시됩니다. catchall 아이콘이 반드시 오류 조건을 나타내는 것은 아닙니다.
키 조회 키 조회 연산자는 클러스터형 인덱스가 있는 테이블의 책갈피 조회입니다. 속성 창에는 클러스터형 인덱스의 이름과 클러스터형 인덱스의 행을 조회하는 데 사용되는 클러스터링 키가 포함됩니다. 키 조회 는 항상 중첩 루프 연산자를 동반 합니다 . WITH PREFETCH 속성 창에 절이 나타나면 쿼리 프로세서는 클러스터형 인덱스의 책갈피를 조회할 때 비동기 프리페치(미리 읽기)를 사용하는 것이 최적이라고 판단했습니다.

쿼리 계획에서 키 조회 연산자를 사용하면 쿼리가 성능 튜닝의 이점을 얻을 수 있음을 나타냅니다. 예를 들어 포함 인덱스 추가로 쿼리 성능이 향상될 수 있습니다.
Keyset 연산자는 다른 사용자가 만든 업데이트를 볼 수 있지만 삽입은 볼 수 없는 커서를 사용합니다.
Language 요소 언어 요소 catch 아이콘은 그래픽 쇼플랜을 생성하는 논리에서 반복기에 적합한 아이콘을 찾을 수 없을 때 표시됩니다. catchall 아이콘이 반드시 오류 조건을 나타내는 것은 아닙니다.
Lazy Spool Lazy Spool 논리 연산자는 입력의 각 행을 tempdb 데이터베이스에 저장된 숨겨진 임시 개체에 저장합니다. 연산자가 다시 해제(예 : 중첩 루프 연산자)이지만 다시 바인딩이 필요하지 않은 경우 스풀링된 데이터는 입력을 다시 검사하는 대신 사용됩니다. 다시 바인딩이 필요한 경우 스풀링된 데이터가 dis카드ed이고 스풀 개체는 (리바운드) 입력을 다시 검사하여 다시 작성됩니다. Lazy Spool 연산자는 스풀 파일을 "지연" 방식으로 빌드합니다. 즉, 스풀의 부모 연산자가 행을 요청할 때마다 스풀 연산자는 입력 연산자에서 행을 가져오고 모든 행을 한 번에 사용하지 않고 스풀에 저장합니다.

지연 스풀 은 논리 연산자입니다.
없음 왼쪽 안티 세미 조인 왼쪽 세미 조인 연산자는 두 번째(아래쪽) 입력에 일치하는 행이 없는 경우 첫 번째(위쪽) 입력에서 각 행을 반환합니다. 속성 창에 조인 조건자가 없으면 각 행은 일치하는 행입니다.

Left Anti Semi Join 은 논리 연산자입니다.
없음 Left Outer Join 왼쪽 외부 조인 연산자는 두 번째(아래쪽) 입력을 사용하여 첫 번째(위쪽) 입력의 조인 조건자를 충족하는 각 행을 반환합니다. 또한 두 번째 입력에 일치하는 행이 없는 첫 번째 입력의 모든 행을 반환합니다. 두 번째 입력의 일치하지 않는 행은 null 값으로 반환됩니다. 속성 창에 조인 조건자가 없으면 각 행은 일치하는 행입니다.

왼쪽 외부 조 인은 논리 연산자입니다.
없음 왼쪽 세미 조인 왼쪽 세미 조인 연산자는 두 번째(아래쪽) 입력에 일치하는 행이 있을 때 첫 번째(위쪽) 입력에서 각 행을 반환합니다. 속성 창에 조인 조건자가 없으면 각 행은 일치하는 행입니다.

왼쪽 세미 조 인은 논리 연산자입니다.
Log Row Scan 로그 행 검사 연산자는 트랜잭션 로그를 검색합니다.

로그 행 검사는 논리 및 물리 연산자입니다.
병합 간격 Merge Interval 연산자는 겹칠 수도 있는 여러 개의 간격을 병합하여 최소한의 겹치지 않는 간격을 생성하는데, 이 간격은 인덱스 항목 검색에 사용됩니다. 이 연산자는 일반적으로 이 연산자가 병합하는 간격(행의 열로 표시됨)을 생성하는 상수 검사 연산자를 통해 하나 이상의 Compute 스칼라 연산자 앞에 나타납니다.

병합 간격 은 논리 및 물리 연산자입니다.
병합 조인 병합 조인 연산자는 내부 조인, 왼쪽 외부 조인, 왼쪽 세미 조인, 왼쪽 세미 조인, 오른쪽 외부 조인, 오른쪽 세미 조인, 오른쪽 반 조인 및 공용 구조체 논리 작업을 수행합니다.

속성 창에서 병합 조연산자에는 작업이 일대다 조인을 수행하는 경우 병합 조건자가 포함되고, 작업이 다대다 조인을 수행하는 경우 다대다 병합 조건자가 포함됩니다. 속성 창에는 작업을 수행하는 데 사용되는 열의 쉼표로 구분된 목록도 포함됩니다. Merge Join 연산자에는 쿼리 계획에 명시적인 정렬 연산을 삽입하여 해당 열을 기준으로 정렬된 2개의 입력이 필요합니다. 병합 조인은 데이터베이스에 적절한 B-트리 인덱스가 있거나 병합 조인 및 롤업 그룹화와 같은 여러 작업에 대해 정렬 순서를 악용할 수 있는 경우와 같이 명시적 정렬이 필요하지 않은 경우에 특히 효과적입니다.

병합 조 인은 물리 연산자입니다. 자세한 내용은 병합 조인 이해를 참조 하세요.
중첩 루프 Nested Loops 연산자는 내부 조인, 왼쪽 우선 외부 조인, 왼쪽 세미 조인 및 왼쪽 앤티 세미 조인 논리 연산을 수행합니다.

중첩 루프 조인은 일반적으로 인덱스를 사용하여 외부 테이블의 각 행에 대해 내부 테이블에서 검색을 수행합니다. 쿼리 프로세서는 예상 비용에 따라 내부 입력을 통해 인덱스에 대한 검색의 지역성을 개선하기 위해 외부 입력을 정렬할지 여부를 결정합니다. 속성 창에서 (선택 사항) 조건자를 충족하는 모든 행은 수행되는 논리 작업에 따라 적용 가능한 대로 반환됩니다. 특성이 OPTIMIZED 설정된 True경우 최적화된 중첩 루프(또는 일괄 정렬)가 사용됨을 의미합니다.

Nested Loops 는 물리 연산자입니다. 자세한 내용은 중첩 루프 조인 이해를 참조하세요.
없음 온라인 인덱스 삽입 온라인 인덱스 삽입 연산자는 인덱스 작업(만들기, 변경 또는 삭제)이 온라인으로 수행됨을 나타냅니다. 즉, 사용자가 인덱스 작업 동안 기본 테이블 데이터를 사용할 수 있습니다.

온라인 인덱스 삽입 은 물리 연산자입니다.
없음 Parallelism 병렬 처리 연산자(또는 Exchange 반복기)는 스트림 분산, 스트림 수집 및 스트림 다시 분할 논리 작업을 수행합니다. 속성 창에는 분할되는 열의 쉼표로 구분된 목록이 있는 파티션 열 조건자가 포함될 있습니다. 또한 속성 창에는 조건자별 순서가 포함될 수 있으며 분할하는 동안 정렬 순서를 유지하기 위한 열이 나열됩니다.

참고: 쿼리가 병렬 쿼리로 컴파일되었지만 런타임에 직렬 쿼리로 실행되는 경우 SQL Server Management Studio에서 실제 실행 계획 포함 옵션을 사용하거나 사용하여 생성된 SET STATISTICS XML 실행 계획 출력에는 Parallelism 연산자에 대한 요소가 포함되지 RunTimeInformation 않습니다. 출력에서 SET STATISTICS PROFILE 실제 행 수와 실제 실행 수는 Parallelism 연산자에 대해 0을 표시합니다. 두 조건 중 하나가 발생하면 병렬 처리 연산자가 런타임 쿼리 계획이 아니라 쿼리 컴파일 중에만 사용되었음을 의미합니다. 서버에 높은 동시 부하가 있는 경우 병렬 쿼리 계획이 직렬로 실행되는 경우가 있습니다.

병렬 처리 는 물리 연산자입니다. Parallelism 연산자에 대한 자세한 내용은 병렬 처리 연산자를 참조 하세요.
매개 변수 테이블 검색 Parameter Table Scan 연산자는 현재 쿼리에서 매개 변수 역할을 하는 테이블을 검색합니다. 일반적으로 저장 프로시저 내의 쿼리에 INSERT 사용됩니다.

Parameter Table Scan 은 논리 및 물리 연산자입니다.
없음 부분 집계 Partial Aggregate 는 병렬 계획에 사용됩니다. 집계 함수는 가능한 한 많은 입력 행에 적용되므로 디스크에 쓰기("spill"라고 함)가 필요하지 않습니다. Hash Match 는 부분 집계를 구현하는 유일한 물리 연산자(반복자)입니다.

Partial Aggregate 는 논리 연산자입니다.
Population Query 채우기 쿼리 연산자는 커서가 열릴 때 커서의 작업 테이블을 채웁니다.
쿼리 새로 고침 새로 고침 쿼리 연산자는 페치 버퍼의 행에 대한 현재 데이터를 가져옵니다.
원격 삭제 Remote Delete 연산자는 원격 개체에서 입력 행을 삭제합니다.

원격 삭제 는 논리 및 물리 연산자입니다.
원격 인덱스 검사 Remote Index Scan 연산자는 속성 창에 지정된 원격 인덱스를 검색합니다.

원격 인덱스 검사는 논리 및 물리 연산자입니다.
원격 인덱스 검색 Remote Index Seek 연산자는 원격 인덱스 개체의 검색 기능을 사용하여 행을 검색합니다. 속성 창에는 사용 중인 원격 인덱스의 이름과 검색 조건자가 포함됩니다.

원격 인덱스 검색 은 논리 및 물리 연산자입니다.
원격 삽입 Remote Insert 연산자는 입력 행을 원격 개체에 삽입합니다.

원격 삽입 은 논리 및 물리 연산자입니다.
원격 쿼리 Remote Query 연산자는 쿼리를 원격 원본으로 전송합니다. 원격 서버로 전송된 쿼리의 텍스트가 속성 창에 나타납니다.

원격 쿼리 는 논리 및 물리 연산자입니다.
원격 검사 Remote Scan 연산자는 원격 개체를 검색합니다. 속성 창에 원격 개체의 이름이 나타납니다.

원격 검사는 논리 및 물리 연산자입니다.
원격 업데이트 Remote Update 연산자는 원격 개체에서 입력 행을 업데이트합니다.

Remote Update 은 논리 및 물리 연산자입니다.
Repartition Streams Repartition 스트림 연산자(또는 교환 반복기)는 여러 스트림을 사용하고 여러 레코드 스트림을 생성합니다. 레코드 내용과 형식은 변경되지 않습니다. 쿼리 최적화 프로그램에서 비트맵 필터를 사용하는 경우 출력 스트림의 행 수가 줄어듭니다. 입력 스트림의 각 레코드가 한 개의 출력 스트림에 배치됩니다. 이 연산자가 순서를 유지하는 경우 모든 입력 스트림을 정렬하고 여러 순서가 지정된 출력 스트림으로 병합해야 합니다. 출력이 분할된 경우 속성 창에는 파티션 열 조건자와 분할 열이 포함됩니다. 출력이 정렬되면 속성 창에 조건자별 순서와 정렬되는 열이 포함됩니다. 연산자는 병렬 쿼리 계획에서만 사용됩니다.

다시 분할 스트림 논리 연산자입니다.
결과 Result 연산자는 쿼리 계획의 끝에 반환되는 데이터입니다. 이는 일반적으로 실행 계획의 루트 요소입니다.

결과는 언어 요소입니다.
RID Lookup RID 조회 는 제공된 RID(행 식별자)를 사용하는 힙의 책갈피 조회입니다. 속성 창에는 테이블의 행을 조회하는 데 사용되는 책갈피 레이블과 행이 조회되는 테이블의 이름이 포함됩니다. RID 조회 에는 항상 .가 NESTED LOOP JOIN함께 제공됩니다.

RID 조회 는 물리 연산자입니다. 책갈피 조회에 대한 자세한 내용은 커밋된 읽기 및 책갈피 조회를 참조 하세요.
없음 오른쪽 안티 세미 조인 오른쪽 Anti Semi Join 연산자는 첫 번째(위쪽) 입력에 일치하는 행이 없을 때 두 번째(아래쪽) 입력에서 각 행을 출력합니다. 일치하는 행은 속성 창에서 조건자를 충족하는 행으로 정의됩니다(조건자가 없는 경우 각 행은 일치하는 행임).

오른쪽 Anti Semi Join 은 논리 연산자입니다.
없음 오른쪽 외부 조인 Right Outer Join 연산자는 두 번째(최하위) 입력 중에서 첫 번째(최상위) 입력과 일치하는 각 행을 반환합니다. 또한 첫 번째 입력에 일치하는 행이 없는 두 번째 입력에서 조인된 NULL모든 행을 반환합니다. 속성 창에 조인 조건자가 없으면 각 행은 일치하는 행입니다.

Right Outer Join 는 논리 연산자입니다.
없음 오른쪽 세미 조인 오른쪽 세미 조인 연산자는 첫 번째(위쪽) 입력에 일치하는 행이 있을 때 두 번째(아래쪽) 입력에서 각 행을 반환합니다. 속성 창에 조인 조건자가 없으면 각 행은 일치하는 행입니다.

오른쪽 세미 조 인은 논리 연산자입니다.
Row Count Spool Row Count Spool 연산자는 입력을 검사하여 존재하는 행 수를 계산하고 데이터 없이 동일한 수의 행을 반환합니다. 이 연산자는 행에 포함된 데이터가 아닌 행의 존재에 대해 검사 것이 중요할 때 사용됩니다. 예를 들어 Nested Loops 연산자가 왼쪽 세미 조인 작업을 수행하고 조인 조건자가 내부 입력에 적용되는 경우 행 개수 스풀이 중첩 루프 연산자의 내부 입력 맨 위에 배치될 수 있습니다. 그런 다음 Nested Loops 연산자는 행 개수 스풀에 의해 출력되는 행 수를 결정할 수 있습니다(내부 쪽의 실제 데이터가 필요하지 않기 때문에).

행 개수 스풀 은 물리 연산자입니다.
없음 Segment Repartition 병렬 쿼리 계획에는 반복자라는 개념 영역이 존재하기도 합니다. 이러한 지역 내의 모든 반복기는 병렬 스레드에서 실행할 수 있습니다. 영역 자체는 직렬로 실행되어야 합니다. 개별 지역 내의 일부 병렬 처리 반복기를 분기 다시 분할이라고 합니다. 이러한 두 영역의 경계에 있는 병렬 처리 반복기를 세그먼트 다시 분할이라고 합니다.

Branch RepartitionSegment Repartition 은 논리 연산자입니다.
세그먼트 Segment 연산자는 하나 이상의 열 값에 따라 입력 집합을 세그먼트로 나눕니다. 이러한 열은 Segment 연산자에 인수로 표시됩니다. 그런 다음 연산자는 한 번에 한 세그먼트씩 출력합니다.

세그먼트 는 물리적 및 논리적 연산자입니다.
Sequence Project Sequence Project 연산자는 열을 추가하여 정렬된 집합에 대한 계산을 수행합니다. 입력 집합을 하나 이상의 열 값에 따라 세그먼트로 나눕니다. 그런 다음 연산자는 한 번에 한 세그먼트씩 출력합니다. 이런 열은 Sequence Project 연산자에서 인수로 표시됩니다.

Sequence Project 는 논리 및 물리 연산자입니다.
시퀀스 Sequence 연산자는 광범위한 업데이트 계획을 실행합니다. 기능적으로 각 입력을 순서대로 실행합니다(위에서 아래로). 각 입력은 일반적으로 다른 개체의 업데이트입니다. 마지막(아래쪽) 입력에서 오는 행만 반환합니다.

시퀀스는 논리 및 물리 연산자 입니다.
스냅샷 Snapshot 연산자는 다른 사용자가 변경한 내용을 볼 수 없는 커서를 만듭니다.
Sort Sort 연산자는 들어오는 모든 행을 정렬합니다. 속성 창에는 이 작업에서 중복 항목이 제거된 경우 조건자별 고유 순서 또는 정렬되는 열의 쉼표로 구분된 목록이 있는 조건자의 순서가 포함됩니다. 열은 열이 오름차순으로 정렬되는 경우 값 ASC 접두사로 지정되고 열이 내림차순으로 정렬되는 경우 값 DESC 이 접두사로 지정됩니다.

정렬 은 논리 및 물리 연산자입니다.
분할 Split 연산자는 업데이트 처리를 최적화하는 데 사용됩니다. 각 업데이트 작업을 삭제 및 삽입 작업으로 분할합니다.

분할 은 논리 및 물리 연산자입니다.
스풀 Spool 연산자는 중간 쿼리 결과를 tempdb 데이터베이스저장합니다.
Stream 집계 Stream Aggregate 연산자는 행을 하나 이상의 열로 그룹화한 다음 쿼리에서 반환된 하나 이상의 집계 식을 계산합니다. 이 연산자의 출력은 쿼리에서 이후 연산자에 의해 참조되거나 클라이언트에 반환되거나 둘 다 수행될 수 있습니다. Stream Aggregate 연산자는 그룹 내의 열에 따라 정렬된 입력이 필요합니다. 최적화 프로그램은 이전 Sort 연산자 또는 정렬된 인덱스 검색 또는 검색으로 인해 데이터가 아직 정렬되지 않은 경우 이 연산자 앞에 Sort 연산자를 사용합니다. SQL Server Management Studio의 SHOWPLAN_ALL 문 또는 그래픽 실행 계획에서 조건자별 그룹의 열이 속성 창에 나열되고 집계 식이 정의된 값 열에 나열됩니다.

Stream Aggregate 는 물리 연산자입니다.
Switch Switchn 개의 입력을 갖는 특수한 유형의 연결 반복기입니다. 식은 각 Switch 연산자에 연결됩니다. 식의 반환 값(0에서 n-1 사이) 에 따라 Switch 는 적절한 입력 스트림을 출력 스트림에 복사합니다. Switch한 가지 사용은 TOP 연산자와 같은 특정 연산자와 함께 빠른 전달 커서를 포함하는 쿼리 계획을 구현하는 것입니다.

스위치 는 논리 및 물리 연산자입니다.
테이블 삭제 Table Delete 연산자는 쿼리 실행 계획의 속성 창에 지정된 테이블에서 행을 삭제합니다.

테이블 삭제 는 물리 연산자입니다.
표 삽입 Table Insert 연산자는 입력의 행을 쿼리 실행 계획의 속성 창에 지정된 테이블에 삽입합니다. 속성 창에는 각 열이 설정된 값을 나타내는 집합 조건자도 포함되어 있습니다. 테이블 삽입에 삽입 값에 대한 자식이 없는 경우 삽입된 행은 Insert 연산자 자체에서 가져옵니다.

Table Insert 는 물리 연산자입니다.
테이블 병합 Table Merge 연산자는 병합 데이터 스트림을 힙에 적용합니다. 연산자는 연산자의 속성 창에 지정된 테이블의 행을 삭제, 업데이트 또는 삽입합니다. 수행되는 실제 작업은 ActionColumn 속성의 런타임 값에 따라 달라집니다.

테이블 병합 은 물리 연산자입니다.
테이블 검색 Table Scan 연산자는 쿼리 실행 계획의 속성 창에 지정된 테이블에서 모든 행을 검색합니다. 속성 창에 조건자가 표시되는 경우 조건자를 만족하는 행만 반환됩니다.

Table Scan 은 논리 및 물리 연산자입니다.
테이블 스풀 Table Spool 연산자는 입력을 검색하고 각 행의 복사본을 숨겨진 스풀 테이블에 배치합니다. 이 스풀 테이블은 tempdb 데이터베이스에 저장되어 쿼리 사용 기간 중에만 존재합니다. 연산자가 다시 해제(예 : 중첩 루프 연산자)이지만 다시 바인딩이 필요하지 않은 경우 스풀링된 데이터는 입력을 다시 검사하는 대신 사용됩니다.

Table Spool 은 물리 연산자입니다.
테이블 업데이트 테이블 업데이트 연산자는 쿼리 실행 계획의 속성 창에 지정된 테이블의 입력 행을 업데이트합니다. 집합 조건자는 업데이트된 각 열의 값을 결정합니다. 이러한 값은 절 또는 이 연산자 내의 SET 다른 위치 및 이 쿼리 내의 다른 위치에서 참조될 수 있습니다.

테이블 업데이트 는 물리 연산자입니다.
테이블 반환 함수 테이블 반환 함수 연산자는 테이블 반환 함수(Transact-SQL 또는 CLR)를 계산하고 결과 행을 tempdb 데이터베이스에 저장합니다. 부모 반복기가 행 을 요청하면 테이블 반환 함수 는 행을 반환합니다 tempdb.

테이블 반환 함수를 호출하는 쿼리는 테이블 반환 함수 반복자로 쿼리 계획을 생성합니다. 테이블 반환 함수 는 다른 매개 변수 값으로 평가할 수 있습니다.

- 테이블 반환 함수 XML 판독기 는 매개 변수로 XML BLOB을 입력하여 XML 문서순으로 정렬된 XML 노드를 나타내는 행 집합을 생성합니다. 다른 입력 매개 변수는 XML 문서의 하위 집합으로 반환되는 XML 노드를 제한할 수 있습니다.

- XPath 필터 를 사용하는 테이블 반환 함수 XML 판독기는 XPath 식을 만족하는 XML 노드로 출력을 제한하는 특수 형식의 XML 판독기 테이블 반환 함수 입니다.

테이블 반환 함수 는 논리 및 물리 연산자입니다.
Top 연산자는 입력을 검색하고 정렬 순서 등을 기준으로 행의 지정된 첫째 번호나 백분율만 반환합니다. 속성 창에는 검사 열 목록이 포함될 수 있습니다. 업데이트 계획에서는 행 개수 제한을 보장하기 위해 Top 연산자를 사용합니다.

Top 은 논리 및 물리 연산자입니다.
없음 상위 N 정렬 상위 N 정렬은 정렬 반복기와 유사합니다. 단, 첫 번째 N개 행만 필요하고 전체 결과 집합은 필요하지 않습니다. 작은 N 값의 경우 SQL Server 쿼리 실행 엔진은 메모리에서 전체 정렬 작업을 수행하려고 시도합니다. 큰 N 값의 경우 쿼리 실행 엔진은 N이 매개 변수가 아닌 보다 일반적인 정렬 방법에 의존합니다.
UDX UDX(확장 연산자)는 SQL Server에서 여러 XQuery 및 XPath 작업 중 하나를 구현합니다.

- 확장 연산자(UDX) FOR XML 은 단일 출력 행의 단일 BLOB 열에서 XML 표현으로 입력되는 관계형 행 집합을 serialize하는 데 사용됩니다. 순서가 중요한 XML 집계 연산자입니다.

- 확장 연산자(UDX) XML SERIALIZER 는 순서에 중요한 XML 집계 연산자입니다. XML 노드 또는 XQuery 스칼라를 나타내는 행을 XML 문서 순서로 입력하고 단일 출력 행의 단일 XML 열에 직렬화된 XML BLOB을 생성합니다.

- 확장 연산자(UDX) XML FRAGMENT SERIALIZER는 XQuery 삽입 데이터 수정 확장 프로그램에 삽입되는 XML 조각을 나타내는 입력 행을 처리하는 데 사용되는 특수한 유형의 XML SERIALIZER입니다.

- 확장 연산자(UDX) XQUERY STRING 은 XML 노드를 나타내는 입력 행의 XQuery 문자열 값을 평가합니다. 순서 구분 문자열 집계 연산자입니다. 입력의 문자열 값을 포함하는 XQuery 스칼라를 나타내는 열이 있는 한 행을 출력합니다.

- 확장 연산자(UDX) XQUERY LIST DECOMPOSER 는 XQuery 목록 분해 연산자입니다. XML 노드를 나타내는 각 입력 행에 대해 입력이 XSD 목록 형식인 경우 목록 요소 값을 포함하는 XQuery 스칼라를 나타내는 하나 이상의 행을 생성합니다.

- 확장 연산자(UDX) XQUERY DATA 는 XML 노드를 나타내는 입력에서 XQuery fn:data() 함수를 평가합니다. 순서 구분 문자열 집계 연산자입니다. 결과를 fn:data()포함하는 XQuery 스칼라를 나타내는 열이 있는 한 행을 출력합니다.

- 확장 연산 자 XQUERY CONTAINS 는 XML 노드를 나타내는 입력에서 XQuery fn:contains() 함수를 평가합니다. 순서 구분 문자열 집계 연산자입니다. 결과를 fn:contains()포함하는 XQuery 스칼라를 나타내는 열이 있는 한 행을 출력합니다.

- 확장 연산자 UPDATE XML NODE 는 XQuery의 XML 노드를 XML 형식의 modify() 메서드에서 데이터 수정 확장으로 바꿉니다.

UDX 연산자는 논리 연산자 및 물리 연산자입니다.
Union Union 논리 연산자는 여러 개의 입력을 검색하여 검색된 각 행을 출력하고 중복 요소는 제거합니다.

Union 은 논리 연산자입니다.
Update Update 연산자는 쿼리 실행 계획의 속성 창에 지정된 개체의 입력에서 각 행을 업데이트합니다.

업데이트 는 논리 연산자입니다. 물리 연산자는 테이블 업데이트, 인덱스 업데이트 또는 클러스터형 인덱스 업데이트입니다.
Window Spool Window Spool 연산자는 각 행을 연결된 창을 나타내는 행 집합으로 확장합니다. 쿼리에서 절은 OVER 쿼리 결과 집합 내에서 창을 정의하고 창 함수는 창의 각 행에 대한 값을 계산합니다.

Window Spool 은 논리 및 물리 연산자입니다.

참고 항목

SQL Server 설명서는 인덱스를 지칭할 때 B-트리라는 용어를 사용합니다. rowstore 인덱스에서 SQL Server는 B+ 트리를 구현합니다. 이는 columnstore 인덱스나 메모리 내 데이터 저장소에는 적용되지 않습니다. 자세한 내용은 SQL Server 및 Azure SQL 인덱스 아키텍처 및 디자인 가이드를 참조 하세요.