실행 계획 논리 및 물리 연산자 참조Showplan Logical and Physical Operators Reference

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse 연산자는 SQL ServerSQL Server에서 쿼리 또는 DML(데이터 조작 언어) 문이 실행되는 방식을 설명합니다. Operators describe how SQL ServerSQL Server executes a query or a Data Manipulation Language (DML) statement. 쿼리 최적화 프로그램은 연산자를 사용하여 쿼리 계획을 작성함으로써 쿼리에 지정된 결과를 만들거나 DML 문에 지정된 작업을 수행합니다.The query optimizer uses operators to build a query plan to create the result specified in the query, or to perform the operation specified in the DML statement. 쿼리 계획은 물리 연산자로 구성된 트리입니다.The query plan is a tree consisting of physical operators. SET SHOWPLAN 문, SQL Server Management StudioSQL Server Management Studio의 그래픽 실행 계획 옵션 또는 SQL Server Profiler의 Showplan 이벤트 클래스를 사용하여 쿼리 계획을 볼 수 있습니다.You can view the query plan by using the SET SHOWPLAN statements, the graphical execution plan options in SQL Server Management StudioSQL Server Management Studio, or the SQL Server Profiler Showplan event classes.

연산자는 논리 연산자와 물리 연산자로 분류됩니다.Operators are classified as logical and physical operators.

논리 연산자Logical Operators
논리 연산자는 문을 처리할 때 사용되는 관계형 대수 연산을 설명합니다.Logical operators describe the relational algebraic operation used to process a statement. 즉, 논리 연산자는 어떤 작업을 수행해야 하는지 개념적으로 설명합니다.In other words, logical operators describe conceptually what operation needs to be performed.

물리 연산자Physical Operators
물리 연산자는 논리 연산자가 설명한 작업을 구현합니다.Physical operators implement the operation described by logical operators. 각 물리 연산자는 연산을 수행하는 개체 또는 루틴입니다.Each physical operator is an object or routine that performs an operation. 예를 들어 일부 물리 연산자는 테이블, 인덱스 또는 뷰에서 열이나 행에 액세스합니다.For example, some physical operators access columns or rows from a table, index or view. 다른 물리 연산자는 계산, 집계, 데이터 무결성 검사 또는 조인 같은 다른 작업을 수행합니다.Other physical operators perform other operations such as calculations, aggregations, data integrity checks or joins. 물리 연산자는 비용과 관련이 있습니다.Physical operators have costs associated with them.

물리 연산자는 초기화하고 데이터를 수집하며 종료합니다.The physical operators initialize, collect data, and close. 특히 물리 연산자는 다음 3개의 메서드 호출에 응답할 수 있습니다.Specifically, the physical operator can answer the following three method calls:

  • Init(): Init() 메서드는 물리 연산자가 초기화하고 필요한 데이터 구조를 설정하도록 합니다.Init(): The Init() method causes a physical operator to initialize itself and set up any required data structures. 일반적으로 물리 연산자는 하나의 Init() 호출을 받지만 여러 개의 호출을 받을 수도 있습니다.The physical operator may receive many Init() calls, though typically a physical operator receives only one.

  • GetNext(): GetNext() 메서드는 물리 연산자가 첫 번째 또는 다음 데이터 행을 가져오도록 합니다.GetNext(): The GetNext() method causes a physical operator to get the first, or subsequent row of data. 물리 연산자는 GetNext() 호출을 받지 않을 수도 있고 여러 개의 호출을 받을 수도 있습니다.The physical operator may receive zero or many GetNext() calls.

  • Close(): Close() 메서드는 물리 연산자가 정리 작업을 수행하고 자동으로 종료하도록 합니다.Close(): The Close() method causes a physical operator to perform some clean-up operations and shut itself down. 물리 연산자는 하나의 Close() 호출만 받습니다.A physical operator only receives one Close() call.

    GetNext() 메서드는 하나의 데이터 행을 반환하며 호출 횟수는 SET STATISTICS PROFILE ON 또는 SET STATISTICS XML ON을 사용하여 생성된 실행 계획 출력에 ActualRows로 나타납니다.The GetNext() method returns one row of data, and the number of times it is called appears as ActualRows in the Showplan output that is produced by using SET STATISTICS PROFILE ON or SET STATISTICS XML ON. 이러한 SET 옵션에 대한 자세한 내용은 SET STATISTICS PROFILE(Transact-SQL)SET STATISTICS XML(Transact-SQL)을 참조하세요.For more information about these SET options, see SET STATISTICS PROFILE (Transact-SQL) and SET STATISTICS XML (Transact-SQL).

    실행 계획 출력에 나타나는 ActualRebindsActualRewinds 개수는 Init() 메서드가 호출된 횟수를 나타냅니다.The ActualRebinds and ActualRewinds counts that appear in Showplan output refer to the number of times that the Init() method is called. 연산자가 루프 조인의 내부 측면에 있지 않으면 ActualRebinds 는 1이고 ActualRewinds 는 0입니다.Unless an operator is on the inner side of a loop join, ActualRebinds equals one and ActualRewinds equals zero. 연산자가 루프 조인의 내부 측면에 있으면 다시 바인딩 횟수와 되감기 횟수의 합계가 조인 외부 측면에서 처리된 행 수와 같아야 합니다.If an operator is on the inner side of a loop join, the sum of the number of rebinds and rewinds should equal the number of rows processed on the outer side of the join. 다시 바인딩은 조인의 상호 관련된 매개 변수가 하나 이상 변경되었으며 내부 측면을 다시 평가해야 함을 의미합니다.A rebind means that one or more of the correlated parameters of the join changed and the inner side must be reevaluated. 되감기는 상호 관련된 매개 변수가 변경되지 않았으며 이전 내부 결과 집합을 다시 사용할 수 있음을 의미합니다.A rewind means that none of the correlated parameters changed and the prior inner result set may be reused.

    ActualRebindsActualRewinds 는 SET STATISTICS XML ON을 사용하여 생성된 XML 실행 계획 출력에 표시되며ActualRebinds and ActualRewinds are present in XML Showplan output produced by using SET STATISTICS XML ON. Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table SpoolTable-valued Function 연산자에 대해서만 채워집니다.They are only populated for the Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool, and Table-valued Function operators. ActualRebindsActualRewindsStartupExpression 특성이 TRUE로 설정되어 있을 때 AssertFilter 연산자에 대해서도 채워질 수 있습니다.ActualRebinds and ActualRewinds may also be populated for the Assert and Filter operators when the StartupExpression attribute is set to TRUE.

    ActualRebindsActualRewinds 가 XML 실행 계획에 있을 경우 EstimateRebindsEstimateRewinds와 같습니다.When ActualRebinds and ActualRewinds are present in an XML Showplan, they are comparable to EstimateRebinds and EstimateRewinds. 두 값이 없으면 예상 행 수(EstimateRows)가 실제 행 수(ActualRows)와 같으며When they are absent, the estimated number of rows (EstimateRows) is comparable to the actual number of rows (ActualRows). 실제 그래픽 실행 계획 출력에 실제 다시 바인딩 횟수와 실제 되감기 횟수가 모두 0으로 표시됩니다.Note that actual graphical Showplan output displays zeros for the actual rebinds and actual rewinds when they are absent.

    관련 카운터인 ActualEndOfScans는 SET STATISTICS XML ON을 사용하여 실행 계획 출력이 생성된 경우에만 사용할 수 있습니다.A related counter, ActualEndOfScans, is available only when Showplan output is produced by using SET STATISTICS XML ON. 이 카운터는 물리 연산자가 데이터 스트림의 끝에 도달할 때마다 1씩 증가합니다.Whenever a physical operator reaches the end of its data stream, this counter is incremented by one. 물리 연산자는 데이터 스트림의 끝에 도달하지 않거나 1회 이상 여러 번 도달할 수 있습니다.A physical operator can reach the end of its data stream zero, one, or multiple times. 다시 바인딩 및 되감기와 마찬가지로 검색 끝 수도 연산자가 루프 조인의 내부 측면에 있는 경우에만 둘 이상이 될 수 있습니다.As with rebinds and rewinds, the number of end of scans can be more than one only if the operator is on the inner side of a loop join. 검색 끝 수는 다시 바인딩 횟수와 되감기 횟수의 합계보다 작거나 같아야 합니다.The number of end of scans should be less than or equal to the sum of the number of rebinds and rewinds.

물리 및 논리 연산자 매핑Mapping Physical and Logical Operators

쿼리 최적화 프로그램은 쿼리 계획을 논리 연산자로 이루어진 트리로 만듭니다.The query optimizer creates a query plan as a tree consisting of logical operators. 쿼리 최적화 프로그램은 쿼리 계획을 만든 다음 각 논리 연산자에 대해 가장 효율적인 물리 연산자를 선택합니다.After the query optimizer creates the plan, the query optimizer chooses the most efficient physical operator for each logical operator. 쿼리 최적화 프로그램은 비용에 기반을 둔 방법을 사용하여 논리 연산자를 구현할 물리 연산자를 결정합니다.The query optimizer uses a cost-based approach to determine which physical operator will implement a logical operator.

일반적으로 여러 물리 연산자가 하나의 논리 연산자를 구현할 수 있습니다.Usually, a logical operation can be implemented by multiple physical operators. 그러나 간혹 하나의 물리 연산자가 여러 논리 연산자를 구현하는 경우도 있습니다.However, in rare cases, a physical operator can implement multiple logical operations as well.

연산자 설명Operator Descriptions

이 섹션에서는 논리 및 물리 연산자에 대해 설명합니다.This section contains descriptions of the logical and physical operators.

그래픽 실행 계획 아이콘Graphical Execution Plan Icon 실행 계획 연산자Showplan Operator DescriptionDescription
적응형 조인 연산자 아이콘Adaptive Join operator icon 적응형 조인Adaptive Join 적응형 조인 연산자를 사용하면 해시 조인 또는 중첩된 루프 조인 메서드 선택을 첫 번째 입력이 검사된 후까지 지연할 수 있습니다.The Adaptive Join operator enables the choice of a hash join or nested loop join method to be deferred until the after the first input has been scanned.
없음None 집계Aggregate Aggregate 연산자는 MIN, MAX, SUM, COUNT 또는 AVG를 포함하는 식을 계산합니다.The Aggregate operator calculates an expression containing MIN, MAX, SUM, COUNT or AVG. Aggregate 연산자는 논리 또는 물리 연산자입니다.The Aggregate operator can be a logical operator or a physical operator.
Arithmetic expression 연산자 아이콘Arithmetic expression operator icon Arithmetic ExpressionArithmetic Expression Arithmetic Expression 연산자는 한 행의 기존 값에서 새 값을 계산합니다.The Arithmetic Expression operator computes a new value from existing values in a row. 에서는 Arithmetic Expression SQL Server 2017SQL Server 2017이 사용되지 않습니다.Arithmetic Expression is not used in SQL Server 2017SQL Server 2017.
Assert 연산자 아이콘Assert operator icon StartupExpressionAssert Assert 연산자는 조건을 확인합니다.The Assert operator verifies a condition. 예를 들어 참조 무결성을 확인하거나 스칼라 하위 쿼리에서 한 개의 행을 반환하게 합니다.For example, it validates referential integrity or ensures that a scalar subquery returns one row. Assert 연산자는 각 입력 행에 대해 실행 계획의 Argument 열의 식을 계산합니다.For each input row, the Assert operator evaluates the expression in the Argument column of the execution plan. 이 식이 NULL이면 Assert 연산자를 통해 행이 전달되고 쿼리 실행을 계속합니다.If this expression evaluates to NULL, the row is passed through the Assert operator and the query execution continues. 이 식이 NULL이 아니면 해당 오류가 발생합니다.If this expression evaluates to a nonnull value, the appropriate error will be raised. Assert 연산자는 물리 연산자입니다.The Assert operator is a physical operator.
Assign 언어 요소 아이콘Assign language element icon AssignAssign Assign 연산자는 식 값 또는 상수 값을 변수에 할당합니다.The Assign operator assigns the value of an expression or a constant to a variable. Assign 는 언어 요소입니다.Assign is a language element.
없음None Asnyc ConcatAsnyc Concat Asnyc Concat 연산자는 원격 쿼리(분산 쿼리)에서만 사용됩니다.The Asnyc Concat operator is used only in remote queries (distributed queries). Asnyc Concat은 부모 노드 하나와 n 개의 자식 노드를 포함합니다.It has n children and one parent node. 일반적으로 일부 자식 노드는 분산 쿼리에 참여하는 원격 컴퓨터에 해당합니다.Usually, some of the children are remote computers that participate in a distributed query. Asnyc Concat 은 모든 자식에게 동시에 open() 호출을 수행한 다음 각 자식에게 비트맵을 적용합니다.Asnyc Concat issues open() calls to all of the children simultaneously and then applies a bitmap to each child. 값이 1인 각 비트에 대해 Async Concat 은 요청 시 출력 행을 부모 노드로 보냅니다.For each bit that is a 1, Async Concat sends the output rows to the parent node on demand.
Bitmap 연산자 아이콘Bitmap operator icon BitmapBitmap SQL ServerSQL ServerBitmap 연산자를 사용하여 병렬 쿼리 계획에 비트맵 필터링을 구현합니다. uses the Bitmap operator to implement bitmap filtering in parallel query plans. 비트맵 필터링은 Parallelism 연산자 같은 다른 연산자로 행을 전달하기 전에 조인 레코드를 생성할 수 없는 키 값을 가진 행을 제거하여 쿼리의 실행 속도를 높입니다.Bitmap filtering speeds up query execution by eliminating rows with key values that cannot produce any join records before passing rows through another operator such as the Parallelism operator. 비트맵 필터는 연산자 트리의 한 부분에 있는 테이블의 값 집합에 대한 압축된 표현을 사용하여 트리의 다른 부분에 있는 다른 테이블에서 행을 필터링합니다.A bitmap filter uses a compact representation of a set of values from a table in one part of the operator tree to filter rows from a second table in another part of the tree. 쿼리 초기 단계에서 필요 없는 행을 제거하면 이후 연산자에서 작업할 행 수가 더 적어지고 쿼리의 전체적인 성능이 향상됩니다.By removing unnecessary rows early in the query, subsequent operators have fewer rows to work with, and the overall performance of the query improves. 최적화 프로그램은 비트맵이 유용할 만큼 충분히 선택 가능성이 높아지는 시점과 필터를 적용할 연산자를 판단합니다.The optimizer determines when a bitmap is selective enough to be useful and in which operators to apply the filter. Bitmap 는 물리 연산자입니다.Bitmap is a physical operator.
Bitmap 연산자 아이콘Bitmap operator icon Bitmap CreateBitmap Create Bitmap Create 연산자는 비트맵이 작성된 실행 계획 출력에 나타납니다.The Bitmap Create operator appears in the Showplan output where bitmaps are built. Bitmap Create 는 논리 연산자입니다.Bitmap Create is a logical operator.
Bookmark lookup 연산자 아이콘Bookmark lookup operator icon Bookmark LookupBookmark Lookup Bookmark Lookup 연산자는 책갈피(행 ID 또는 클러스터링 키)를 사용하여 테이블이나 클러스터형 인덱스에서 해당 행을 조회합니다.The Bookmark Lookup operator uses a bookmark (row ID or clustering key) to look up the corresponding row in the table or clustered index. Argument 열에는 테이블이나 클러스터형 인덱스에서 행을 조회할 때 사용하는 책갈피 레이블이 포함됩니다.The Argument column contains the bookmark label used to look up the row in the table or clustered index. Argument 열에는 행을 조회하는 테이블 또는 클러스터형 인덱스의 이름도 포함됩니다.The Argument column also contains the name of the table or clustered index in which the row is looked up. WITH PREFETCH 절이 Argument 열에 나타나는 경우에 쿼리 프로세서에서는 테이블 또는 클러스터형 인덱스에서 책갈피를 조회할 때 비동기 사전 인출(미리 읽기)을 사용하는 것을 최적의 방법으로 결정합니다.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the table or clustered index.

에서는 Bookmark Lookup SQL Server 2017SQL Server 2017이 사용되지 않습니다.Bookmark Lookup is not used in SQL Server 2017SQL Server 2017. 대신 Clustered Index SeekRID Lookup 이 책갈피 조회 기능을 제공합니다.Instead, Clustered Index Seek and RID Lookup provide bookmark lookup functionality. Key Lookup 연산자도 이 기능을 제공합니다.The Key Lookup operator also provides this functionality.
없음None Branch RepartitionBranch Repartition 병렬 쿼리 계획에는 반복자라는 개념 영역이 존재하기도 합니다.In a parallel query plan, sometimes there are conceptual regions of iterators. 이 영역에 있는 모든 반복자는 병렬 스레드에 의해 실행될 수 있습니다.All of the iterators within such a region can be executed by parallel threads. 영역 자체는 직렬로 실행되어야 합니다.The regions themselves must be executed serially. 개별 영역 내에 있는 일부 Parallelism 반복자를 Branch Repartition이라고 합니다.Some of the Parallelism iterators within an individual region are called Branch Repartition. 이러한 두 영역의 경계에 있는 Parallelism 반복자를 Segment Repartition이라고 합니다.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch RepartitionSegment Repartition 은 논리 연산자입니다.Branch Repartition and Segment Repartition are logical operators.
없음None BroadcastBroadcast Broadcast 에는 자식 노드가 하나 있고 부모 노드가 n 개 있습니다.Broadcast has one child node and n parent nodes. Broadcast 는 요청 시 여러 소비자에게 입력 행을 보냅니다.Broadcast sends its input rows to multiple consumers on demand. 각 소비자는 모든 행을 받습니다.Each consumer gets all of the rows. 예를 들어 모든 소비자가 해시 조인의 양쪽에 생성되면 n 개의 해시 테이블 복사본이 생성됩니다.For example, if all of the consumers are build sides of a hash join, then n copies of the hash tables will be built.
Build hash 연산자 아이콘Build hash operator icon Build HashBuild Hash xVelocity 메모리 최적화 columnstore 인덱스에 대한 일괄 해시 테이블의 빌드를 나타냅니다.Indicates the build of a batch hash table for an xVelocity memory optimized columnstore index.
없음None CacheCache CacheSpool 연산자의 특수 버전입니다.Cache is a specialized version of the Spool operator. 이 연산자는 한 행의 데이터만 저장합니다.It stores only one row of data. Cache 는 논리 연산자입니다.Cache is a logical operator. 에서는 Cache SQL Server 2017SQL Server 2017가 사용되지 않습니다.Cache is not used in SQL Server 2017SQL Server 2017.
Clustered index delete 연산자 아이콘Clustered index delete operator icon Clustered Index DeleteClustered Index Delete Clustered Index Delete 연산자는 쿼리 실행 계획의 Argument 열에 지정된 클러스터형 인덱스에서 행을 삭제합니다.The Clustered Index Delete operator deletes rows from the clustered index specified in the Argument column of the query execution plan. Argument 열에 WHERE:() 조건자가 있으면 조건자에 부합되는 행만 삭제됩니다.Clustered Index Delete 는 물리 연산자입니다.If a WHERE:() predicate is present in the Argument column, then only those rows that satisfy the predicate are deleted.Clustered Index Delete is a physical operator.
Clustered index insert 연산자 아이콘Clustered index insert operator icon Clustered Index InsertClustered Index Insert Clustered Index Insert 실행 계획 연산자는 해당 입력의 행을 Argument 열에 지정된 클러스터형 인덱스에 삽입합니다.The Clustered Index Insert Showplan operator inserts rows from its input into the clustered index specified in the Argument column. Argument 열에는 각 열의 설정 값을 나타내는 SET:() 조건자도 포함됩니다.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Clustered Index Insert 에 삽입 값에 대한 자식이 없는 경우 삽입된 행을 Insert 연산자 자체에서 가져옵니다.Clustered Index Insert 는 물리 연산자입니다.If Clustered Index Insert has no children for insert values, the row inserted is taken from the Insert operator itself.Clustered Index Insert is a physical operator.
Clustered index merge 연산자Clustered index merge operator Clustered Index MergeClustered Index Merge Clustered Index Merge 연산자는 병합 데이터 스트림을 클러스터형 인덱스에 적용합니다.The Clustered Index Merge operator applies a merge data stream to a clustered index. 이 연산자는 연산자의 Argument 열에 지정된 클러스터형 인덱스에서 행을 삭제, 업데이트 또는 삽입합니다.The operator deletes, updates, or inserts rows from the clustered index specified in the Argument column of the operator. 연산자의 Argument 열에서 지정한 ACTION 열의 런타임 값에 따라 실제 작업이 수행됩니다.The actual operation performed depends on the runtime value of the ACTION column specified in the Argument column of the operator. Clustered Index Merge 는 물리 연산자입니다.Clustered Index Merge is a physical operator.
Clustered index scan 연산자 아이콘Clustered index scan operator icon Clustered Index ScanClustered Index Scan Clustered Index Scan 연산자는 쿼리 실행 계획의 Argument 열에 지정된 클러스터형 인덱스를 검색합니다.The Clustered Index Scan operator scans the clustered index specified in the Argument column of the query execution plan. 선택 사항인 WHERE:() 조건자가 있는 경우에는 조건자에 부합되는 행만 반환됩니다.When an optional WHERE:() predicate is present, only those rows that satisfy the predicate are returned. Argument 열에 ORDERED 절이 있으면 쿼리 프로세서가 행의 출력이 클러스터형 인덱스에 의해 정렬되는 순서로 반환되도록 요청한 것입니다.If the Argument column contains the ORDERED clause, the query processor has requested that the output of the rows be returned in the order in which the clustered index has sorted it. ORDERED 절이 없으면 저장소 엔진은 출력을 정렬하지 않고 최적의 방법으로 인덱스를 검색합니다.If the ORDERED clause is not present, the storage engine scans the index in the optimal way, without necessarily sorting the output. Clustered Index Scan 은 논리 및 물리 연산자입니다.Clustered Index Scan is a logical and physical operator.
Clustered index seek 연산자 아이콘Clustered index seek operator icon Clustered Index SeekClustered Index Seek Clustered Index Seek 연산자는 인덱스의 검색 기능을 사용하여 클러스터형 인덱스에서 행을 검색합니다.The Clustered Index Seek operator uses the seeking ability of indexes to retrieve rows from a clustered index. Argument 열에는 사용할 클러스터형 인덱스의 이름 및 SEEK:() 조건자가 있습니다.The Argument column contains the name of the clustered index being used and the SEEK:() predicate. 저장소 엔진은 이 인덱스를 사용하여 SEEK:() 조건자에 부합되는 행만 처리합니다.The storage engine uses the index to process only those rows that satisfy this SEEK:() predicate. 또한 저장소 엔진은 SEEK:() 조건자에 부합되는 행에 대해서만 평가를 수행하는 WHERE:() 조건자를 포함할 수 있지만 이는 선택적이며 이 작업을 완료하는 데는 인덱스를 사용하지 않습니다.It can also include a WHERE:() predicate where the storage engine evaluates against all rows that satisfy the SEEK:() predicate, but this is optional and does not use indexes to complete this process.

Argument 열에 ORDERED 절이 있으면 쿼리 프로세서는 클러스터형 인덱스가 정렬한 순서대로 행을 반환합니다.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the clustered index has sorted them. ORDERED 절이 없으면 저장소 엔진은 출력을 정렬하지 않고 최적의 방법으로 인덱스를 검색합니다.If the ORDERED clause is not present, the storage engine searches the index in the optimal way, without necessarily sorting the output. 출력 순서를 유지하는 것보다 정렬하지 않고 출력하는 것이 더 효율적일 수 있습니다.Allowing the output to retain its ordering can be less efficient than producing nonsorted output. 키워드 LOOKUP을 사용하면 책갈피 조회가 수행됩니다.When the keyword LOOKUP appears, then a bookmark lookup is being performed. SQL Server 2008SQL Server 2008 이상 버전에서는 Key Lookup 연산자가 책갈피 조회 기능을 제공합니다.In SQL Server 2008SQL Server 2008 and later versions, the Key Lookup operator provides bookmark lookup functionality. Clustered Index Seek 은 논리/물리 연산자입니다.Clustered Index Seek is a logical and physical operator.
Clustered index update 연산자 아이콘Clustered index update operator icon Clustered Index UpdateClustered Index Update Clustered Index Update 연산자는 Argument 열에 지정된 클러스터형 인덱스의 입력 행을 업데이트합니다. WHERE:() 조건자가 있는 경우에는 조건자에 부합되는 행만 업데이트됩니다.The Clustered Index Update operator updates input rows in the clustered index specified in the Argument column.If a WHERE:() predicate is present, only those rows that satisfy this predicate are updated. SET:() 조건자가 있는 경우에는 업데이트된 각 열이 이 값으로 설정됩니다.If a SET:() predicate is present, each updated column is set to this value. DEFINE:() 조건자가 있는 경우에는 이 연산자가 정의하는 값이 나열됩니다.If a DEFINE:() predicate is present, the values that this operator defines are listed. 이러한 값은 SET 절 또는 이 연산자의 다른 곳과 이 쿼리 내의 다른 곳에서 참조될 수 있습니다.These values may be referenced in the SET clause or elsewhere within this operator and elsewhere within this query. Clustered Index Update 은 논리 및 물리 연산자입니다.Clustered Index Update is a logical and physical operator.
Collapse 연산자 아이콘Collapse operator icon 축소Collapse Collapse 연산자는 업데이트 처리를 최적화합니다.The Collapse operator optimizes update processing. 업데이트 처리는 Split 연산자를 사용하여 삭제와 삽입으로 분리할 수 있습니다.When an update is performed, it can be split (using the Split operator) into a delete and an insert. Argument 열에는 키 열 목록을 지정하는 GROUP BY:() 절이 포함됩니다.The Argument column contains a GROUP BY:() clause that specifies a list of key columns. 쿼리 프로세서가 동일한 키 값을 삭제 및 삽입하는 인접 행을 발견하면 별개의 두 작업을 보다 효율적인 한 개의 업데이트 작업으로 교체합니다.If the query processor encounters adjacent rows that delete and insert the same key values, it replaces these separate operations with a single more efficient update operation. Collapse 은 논리 및 물리 연산자입니다.Collapse is a logical and physical operator.
Columnstore 인덱스 검색Columnstore Index Scan Columnstore 인덱스 검색Columnstore Index Scan Columnstore Index Scan 연산자는 쿼리 실행 계획의 Argument 열에 지정된 Columnstore 인덱스를 검색합니다.The Columnstore Index Scan operator scans the columnstore index specified in the Argument column of the query execution plan.
Compute scalar 연산자 아이콘Compute scalar operator icon Compute ScalarCompute Scalar Compute Scalar 연산자는 식을 계산하여 계산된 스칼라 값을 만듭니다.The Compute Scalar operator evaluates an expression to produce a computed scalar value. 이 값은 사용자에 반환되거나 그 외에 쿼리에서 참조되거나 둘 다일 수 있습니다.This may then be returned to the user, referenced elsewhere in the query, or both. 예를 들어 두 작업은 모두 필터 조건자 또는 조인 조건자에서 수행됩니다.An example of both is in a filter predicate or join predicate. Compute Scalar 는 논리 및 물리 연산자입니다.Compute Scalar is a logical and physical operator.

SET STATISTICS XML에 의해 생성된 실행 계획에 나타나는Compute Scalar 연산자는 RunTimeInformation 요소를 포함할 수 없습니다.Compute Scalar operators that appear in Showplans generated by SET STATISTICS XML might not contain the RunTimeInformation element. 에서실제 실행 계획 포함 옵션을 선택하면 그래픽 실행 계획의속성 창에 실제 행 수 , 실제 다시 바인딩 횟수 실제 되감기 횟수 SQL Server Management StudioSQL Server Management Studio가 표시되지 않을 수도 있습니다.In graphical Showplans, Actual Rows, Actual Rebinds, and Actual Rewinds might be absent from the Properties window when the Include Actual Execution Plan option is selected in SQL Server Management StudioSQL Server Management Studio. 이 경우 컴파일된 쿼리 계획에서 이러한 연산자가 사용된 경우에도 런타임 쿼리 계획의 다른 연산자가 해당 작업을 수행한 것입니다.When this occurs, it means that although these operators were used in the compiled query plan, their work was performed by other operators in the run-time query plan. 또한 SET STATISTICS PROFILE로 만든 실행 계획 출력의 실행 수는 SET STATISTICS XML로 만든 실행 계획의 다시 바인딩 및 다시 감기의 합과 같습니다.Also note that the number of executes in Showplan output generated by SET STATISTICS PROFILE is equivalent to the sum of rebinds and rewinds in Showplans generated by SET STATISTICS XML.
Concatenation 연산자 아이콘Concatenation operator icon ConcatenationConcatenation Concatenation 연산자는 여러 개의 입력을 검색하고 검색된 각 행을 반환합니다.The Concatenation operator scans multiple inputs, returning each row scanned. Concatenation 은 일반적으로 Transact-SQLTransact-SQL UNION ALL 구조를 구현하는 데 사용됩니다.Concatenation is typically used to implement the Transact-SQLTransact-SQL UNION ALL construct. Concatenation 물리 연산자에는 두 개 이상의 입력과 한 개의 출력이 있습니다.The Concatenation physical operator has two or more inputs and one output. Concatenation은 첫 번째 입력 스트림에서 출력 스트림으로 행을 복사한 다음 이 연산을 각 추가 입력 스트림에 대해 반복합니다.Concatenation copies rows from the first input stream to the output stream, then repeats this operation for each additional input stream. Concatenation 은 논리 및 물리 연산자입니다.Concatenation is a logical and physical operator.
Constant scan 연산자 아이콘Constant scan operator icon Constant ScanConstant Scan Constant Scan 연산자는 하나 이상의 상수 행을 쿼리에 사용하며The Constant Scan operator introduces one or more constant rows into a query. Compute Scalar 연산자는 Constant Scan 연산자로 생성된 행에 열을 추가하기 위해 Constant Scan 뒤에 사용되는 경우가 많습니다.A Compute Scalar operator is often used after a Constant Scan to add columns to a row produced by the Constant Scan operator.
Convert(데이터베이스 엔진) 언어 요소 아이콘Convert (Database Engine) language element icon 변환Convert Convert 연산자는 스칼라 데이터 형식을 다른 형식으로 변환합니다.The Convert operator converts one scalar data type to another. Convert 는 언어 요소입니다.Convert is a language element.
없음None Cross JoinCross Join Cross Join 논리 연산자는 첫 번째(최상위) 입력의 각 행을 두 번째(최하위) 입력의 각 행과 조인합니다.The Cross Join operator joins each row from the first (top) input with each row from the second (bottom) input. Cross Join 는 논리 연산자입니다.Cross Join is a logical operator.
Cursor catchall 커서 연산자 아이콘Cursor catchall cursor operator icon 캐치올catchall 그래픽 실행 계획을 생성하는 논리에서 반복자에 적합한 아이콘을 찾지 못하면 캐치올 아이콘이 표시됩니다.The catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical showplans. 캐치올 아이콘이 반드시 오류 상태를 나타내는 것은 아닙니다.The catchall icon does not necessarily indicate an error condition. 캐치올 아이콘은 파랑(반복자), 주황(커서) 및 녹색( Transact-SQLTransact-SQL 언어 요소)의 3가지 유형이 있습니다.There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language elements).
없음None 커서Cursor Cursor 논리 및 물리 연산자는 커서 작업이 수반되는 쿼리 또는 업데이트가 실행되는 방식을 설명하기 위해 사용합니다.The Cursor logical and physical operators are used to describe how a query or update involving cursor operations is executed. 물리 연산자는 커서를 처리하는 데 사용하는 물리적 구현 알고리즘(예: 키 집합 커서의 사용)을 설명합니다.The physical operators describe the physical implementation algorithm used to process the cursor; for example, using a keyset-driven cursor. 커서 실행의 각 단계마다 물리 연산자가 수반됩니다.Each step in the execution of a cursor involves a physical operator. 논리 연산자는 커서의 속성(예: 커서가 읽기 전용임)을 설명합니다.The logical operators describe a property of the cursor, such as the cursor is read only.

논리 연산자에는 Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, Secondary 및 Synchronous가 있습니다.Logical operators include Asynchronous, Optimistic, Primary, Read Only, Scroll Locks, and Secondary and Synchronous.

물리 연산자에는 Dynamic, Fetch Query, Keyset, Population Query, Refresh Query 및 Snapshot이 있습니다.Physical operators include Dynamic, Fetch Query, Keyset, Population Query, Refresh Query and Snapshot.
Declare 언어 요소 아이콘Declare language element icon DeclareDeclare Declare 연산자는 쿼리 계획에 지역 변수를 할당합니다.The Declare operator allocates a local variable in the query plan. Declare 는 언어 요소입니다.Declare is a language element.
Delete(데이터베이스 엔진) 연산자 아이콘Delete (Database Engine) operator icon DeleteDelete Delete 연산자는 Argument 열의 선택적 조건자에 부합되는 개체 행에서 삭제됩니다.The Delete operator deletes from an object rows that satisfy the optional predicate in the Argument column.
Delete scan 연산자 아이콘Delete scan operator icon Deleted ScanDeleted Scan Deleted Scan 연산자는 트리거 내에서 삭제된 테이블을 검색합니다.The Deleted Scan operator scans the deleted table within a trigger.
없음None DistinctDistinct Distinct 연산자는 행 집합 또는 값 컬렉션에서 중복 요소를 제거합니다.The Distinct operator removes duplicates from a rowset or from a collection of values. Distinct 는 논리 연산자입니다.Distinct is a logical operator.
없음None Distinct SortDistinct Sort Distinct Sort 논리 연산자는 입력을 검색하며 중복 요소를 제거하고 Argument 열의 DISTINCT ORDER BY:() 조건자에 지정된 열을 기준으로 정렬합니다.The Distinct Sort logical operator scans the input, removing duplicates and sorting by the columns specified in the DISTINCT ORDER BY:() predicate of the Argument column. Distinct Sort 는 논리 연산자입니다.Distinct Sort is a logical operator.
Distribute streams parallelism 연산자 아이콘Distribute streams parallelism operator icon Distribute StreamsDistribute Streams Distribute Streams 연산자는 병렬 쿼리 계획에서만 사용됩니다.The Distribute Streams operator is used only in parallel query plans. Distribute Streams 연산자는 레코드의 단일 입력 스트림을 사용하여 여러 개의 출력 스트림을 만듭니다.The Distribute Streams operator takes a single input stream of records and produces multiple output streams. 레코드 내용과 형식은 변경되지 않습니다.The record contents and format are not changed. 입력 스트림의 각 레코드는 출력 스트림 중 하나에 표시됩니다.Each record from the input stream appears in one of the output streams. 이 연산자는 입력 레코드의 상대적인 순서를 출력 스트림에서 자동으로 유지합니다.This operator automatically preserves the relative order of the input records in the output streams. 대개 특정 입력 레코드가 어떤 출력 스트림에 포함될지 결정하는 데는 해시가 사용됩니다.Usually, hashing is used to decide to which output stream a particular input record belongs.

출력이 분할되는 경우에는 Argument 열에 PARTITION COLUMNS:() 조건자와 분할 열이 포함됩니다.If the output is partitioned, then the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns. Distribute Streams 는 논리 연산자입니다.Distribute Streams is a logical operator
Dynamic 커서 연산자 아이콘Dynamic cursor operator icon DynamicDynamic Dynamic 연산자는 다른 커서가 변경한 모든 내용을 볼 수 있는 커서를 사용합니다.The Dynamic operator uses a cursor that can see all changes made by others.
Spool 연산자 아이콘Spool operator icon Eager SpoolEager Spool Eager Spool 연산자는 전체 입력을 받아 각 행을 tempdb 데이터베이스에 저장된 숨겨진 임시 개체에 저장합니다.The Eager Spool operator takes the entire input, storing each row in a hidden temporary object stored in the tempdb database. 예를 들어 Nested Loops 연산자로 연산자를 다시 돌리지만 다시 바인딩할 필요가 없을 경우 입력 사항을 다시 검색하는 대신 스풀된 데이터를 사용합니다.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. 다시 바인딩해야 하는 경우에는 스풀된 데이터를 삭제하고 다시 바인딩된 입력을 다시 검색하여 스풀 개체를 다시 작성합니다.If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. Eager Spool 연산자는 "신속하게" 스풀 파일을 만듭니다. 스풀의 부모 연산자가 첫 번째 행을 요청하면 스풀 연산자는 입력 연산자로부터 모든 행을 받아 스풀에 저장합니다.The Eager Spool operator builds its spool file in an "eager" manner: when the spool's parent operator asks for the first row, the spool operator consumes all rows from its input operator and stores them in the spool. Eager Spool 은 논리 연산자입니다.Eager Spool is a logical operator.
Fetch query 커서 연산자 아이콘Fetch query cursor operator icon Fetch QueryFetch Query Fetch Query 연산자는 커서에 대해 인출이 실행될 때 행을 검색합니다.The Fetch Query operator retrieves rows when a fetch is issued against a cursor.
Filter(데이터베이스 엔진) 연산자 아이콘Filter (Database Engine) operator icon AssertFilter Filter 연산자는 입력을 검색하고 Argument 열에 표시되는 필터 식(조건자)에 부합되는 행만 반환합니다.The Filter operator scans the input, returning only those rows that satisfy the filter expression (predicate) that appears in the Argument column.
없음None Flow DistinctFlow Distinct Flow Distinct 논리 연산자는 입력을 검색하며 중복 요소를 제거합니다.The Flow Distinct logical operator scans the input, removing duplicates. Distinct 연산자는 출력을 만들기 전에 모든 입력을 사용하지만 FlowDistinct 연산자는 각 행을 입력으로부터 가져올 때 반환합니다(행이 중복 요소인 관계로 삭제되지 않는 경우).Whereas the Distinct operator consumes all input before producing any output, the FlowDistinct operator returns each row as it is obtained from the input (unless that row is a duplicate, in which case it is discarded).
없음None Full Outer JoinFull Outer Join Full Outer Join 논리 연산자는 두 번째(최하위) 입력의 각 행과 조인된 첫 번째(최상위) 입력의 조인 조건자에 부합되는 각 행을 반환합니다.The Full Outer Join logical operator returns each row satisfying the join predicate from the first (top) input joined with each row from the second (bottom) input. 다음 항목으로부터 행을 반환하기도 합니다.It also returns rows from:

-두 번째 입력과 일치하는 요소가 없는 첫 번째 입력-The first input that had no matches in the second input.

-첫 번째 입력과 일치하는 요소가 없는 두 번째 입력-The second input that had no matches in the first input.

일치되는 값이 없는 입력은 Null 값으로 반환됩니다.The input that does not contain the matching values is returned as a null value. Full Outer Join 는 논리 연산자입니다.Full Outer Join is a logical operator.
Gather streams parallelism 연산자 아이콘Gather streams parallelism operator icon Gather StreamsGather Streams Gather Streams 연산자는 병렬 쿼리 계획에서만 사용됩니다.The Gather Streams operator is only used in parallel query plans. Gather Streams 연산자는 몇 개의 입력 스트림을 사용하고 해당 입력 스트림을 결합하여 레코드의 단일 출력 스트림을 만듭니다.The Gather Streams operator consumes several input streams and produces a single output stream of records by combining the input streams. 레코드 내용과 형식은 변경되지 않습니다.The record contents and format are not changed. 이 연산자가 순서를 그대로 유지하는 경우에는 모든 입력 스트림이 정렬되어야 합니다.If this operator is order preserving, all input streams must be ordered. 출력이 정렬되는 경우에는 Argument 열에 ORDER BY:() 조건자와 정렬될 열 이름이 포함됩니다.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the names of columns being ordered. Gather Streams 는 논리 연산자입니다.Gather Streams is a logical operator.
Hash match 연산자 아이콘Hash match operator icon Hash MatchHash Match Hash Match 연산자는 빌드 입력으로부터 각 행에 대한 해시 값을 계산하여 해시 테이블을 작성합니다.The Hash Match operator builds a hash table by computing a hash value for each row from its build input. HASH:() 조건자는 해시 값을 만들기 위해 사용하는 열 목록과 함께 Argument 열에 포함됩니다.A HASH:() predicate with a list of columns used to create a hash value appears in the Argument column. 이 조건자는 각 검색 행에 대해 동일한 해시 함수를 사용하여 해시 값을 계산하고 해시 테이블에서 일치하는 항목을 찾습니다.Then, for each probe row (as applicable), it computes a hash value (using the same hash function) and looks in the hash table for matches. 잔여 조건자( Argument 열에서 RESIDUAL:()로 식별됨)가 있으면 이 역시 만족해야 일치 항목으로 판단됩니다.If a residual predicate is present (identified by RESIDUAL:() in the Argument column), that predicate must also be satisfied for rows to be considered a match. 수행되는 논리 연산에 따라 다음과 같이 동작이 달라집니다.Behavior depends on the logical operation being performed:

-모든 조인에 대해 첫 번째(최상위) 입력을 사용하여 해시 테이블을 작성하고 두 번째(최하위) 입력을 사용하여 해시 테이블을 검색합니다.-For any joins, use the first (top) input to build the hash table and the second (bottom) input to probe the hash table. 출력은 조인 유형으로 지정된 대로 일치(또는 불일치)됩니다.Output matches (or nonmatches) as dictated by the join type. 여러 조인에서 같은 조인 열을 사용하는 경우에는 이러한 연산이 해시 팀으로 그룹화됩니다.If multiple joins use the same join column, these operations are grouped into a hash team.

-distinct 또는 aggregate 연산자에 대해서는 입력을 사용하여 해시 테이블을 작성합니다. 이때 중복 요소는 제거하고 모든 집계 식을 계산합니다.-For the distinct or aggregate operators, use the input to build the hash table (removing duplicates and computing any aggregate expressions). 해시 테이블이 작성되면 테이블을 검색하고 모든 항목을 출력합니다.When the hash table is built, scan the table and output all entries.

-union 연산자에 대해서는 첫 번째 입력을 사용하여 해시 테이블을 작성합니다. 이때 중복 요소는 제거합니다.-For the union operator, use the first input to build the hash table (removing duplicates). 다음 두 번째 입력(중복 요소가 없어야 함)을 사용하여 해시 테이블을 검색하고 일치되는 항목이 없는 모든 행을 반환한 뒤 해시 테이블을 검색하여 모든 항목을 반환합니다.Use the second input (which must have no duplicates) to probe the hash table, returning all rows that have no matches, then scan the hash table and return all entries.

Hash Match 는 물리 연산자입니다.Hash Match is a physical operator.
If 언어 요소 아이콘If language element icon IfIf If 연산자는 식을 기준으로 조건부 처리를 수행합니다.The If operator carries out conditional processing based on an expression. If 는 언어 요소입니다.If is a language element.
없음None Inner JoinInner Join Inner Join 논리 연산자는 첫 번째(최상위) 입력과 두 번째(최하위) 입력의 조인에 부합되는 각 행을 반환합니다.The Inner Join logical operator returns each row that satisfies the join of the first (top) input with the second (bottom) input.
Insert(데이터베이스 엔진) 연산자 아이콘Insert (Database Engine) operator icon InsertInsert Insert 논리 연산자는 입력의 각 행을 Argument 열에 지정된 개체에 삽입합니다.The Insert logical operator inserts each row from its input into the object specified in the Argument column. 물리 연산자는 Table Insert, Index Insert또는 Clustered Index Insert 연산자입니다.The physical operator is either the Table Insert, Index Insert, or Clustered Index Insert operator.
Inserted scan 연산자 아이콘Inserted scan operator icon Inserted ScanInserted Scan Inserted Scan 연산자는 inserted 테이블을 검색합니다.The Inserted Scan operator scans the inserted table. Inserted Scan 은 논리 및 물리 연산자입니다.Inserted Scan is a logical and physical operator.
Intrinsic 언어 요소 아이콘Intrinsic language element icon IntrinsicIntrinsic Intrinsic 연산자는 내부 Transact-SQLTransact-SQL 함수를 호출합니다.The Intrinsic operator invokes an internal Transact-SQLTransact-SQL function. Intrinsic 는 언어 요소입니다.Intrinsic is a language element.
Iterator catchall 연산자 아이콘Iterator catchall operator icon IteratorIterator 그래픽 실행 계획을 생성하는 논리에서 반복자에 적합한 아이콘을 찾지 못하면 Iterator 캐치올 아이콘이 표시됩니다.The Iterator catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. 캐치올 아이콘이 반드시 오류 상태를 나타내는 것은 아닙니다.The catchall icon does not necessarily indicate an error condition. 캐치올 아이콘은 파랑(반복자), 주황(커서) 및 녹색( Transact-SQLTransact-SQL 언어 구문)의 3가지 유형이 있습니다.There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
Bookmark lookup 연산자 아이콘Bookmark lookup operator icon Key LookupKey Lookup Key Lookup 연산자는 클러스터형 인덱스가 있는 테이블의 책갈피 조회입니다.The Key Lookup operator is a bookmark lookup on a table with a clustered index. Argument 열에는 클러스터형 인덱스의 이름과 클러스터형 인덱스에서 행을 조회할 때 사용되는 클러스터링 키가 포함됩니다.The Argument column contains the name of the clustered index and the clustering key used to look up the row in the clustered index. Key Lookup 은 항상 Nested Loops 연산자와 함께 사용됩니다.Key Lookup is always accompanied by a Nested Loops operator. WITH PREFETCH 절이 Argument 열에 나타나는 경우에 쿼리 프로세서에서는 클러스터형 인덱스에서 책갈피를 조회할 때 비동기 사전 인출(미리 읽기)을 사용하는 것을 최적의 방법으로 결정합니다.If the WITH PREFETCH clause appears in the Argument column, the query processor has determined that it is optimal to use asynchronous prefetching (read-ahead) when looking up bookmarks in the clustered index.

쿼리 계획에서 Key Lookup 연산자를 사용하는 것은 쿼리에서 성능 튜닝의 장점을 활용할 수 있음을 나타냅니다.The use of a Key Lookup operator in a query plan indicates that the query might benefit from performance tuning. 예를 들어 포함 인덱스를 추가하여 쿼리 성능을 향상시킬 수 있습니다.For example, query performance might be improved by adding a covering index.
Keyset 커서 연산자 아이콘Keyset cursor operator icon KeysetKeyset Keyset 연산자는 다른 사용자의 업데이트 내용은 볼 수 있지만 삽입 내용은 볼 수 없는 커서를 사용합니다.The Keyset operator uses a cursor that can see updates, but not inserts made by others.
Language element 캐치올 아이콘Language element catchall icon Language 요소Language Element 그래픽 실행 계획을 생성하는 논리에서 반복자에 적합한 아이콘을 찾지 못하면 Language Element 캐치올 아이콘이 표시됩니다.The Language Element catchall icon is displayed when a suitable icon for the iterator cannot be found by the logic that produces graphical Showplans. 캐치올 아이콘이 반드시 오류 상태를 나타내는 것은 아닙니다.The catchall icon does not necessarily indicate an error condition. 캐치올 아이콘은 파랑(반복자), 주황(커서) 및 녹색( Transact-SQLTransact-SQL 언어 구문)의 3가지 유형이 있습니다.There are three catchall icons: blue (for iterators), orange (for cursors), and green (for Transact-SQLTransact-SQL language constructs).
Spool 연산자 아이콘Spool operator icon Lazy SpoolLazy Spool Lazy Spool 논리 연산자는 입력된 각 행을 tempdb 데이터베이스에 저장된 숨겨진 임시 개체에 저장합니다.The Lazy Spool logical operator stores each row from its input in a hidden temporary object stored in the tempdb database. 예를 들어 Nested Loops 연산자로 연산자를 다시 돌리지만 다시 바인딩할 필요가 없을 경우 입력 사항을 다시 검색하는 대신 스풀된 데이터를 사용합니다.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. 다시 바인딩해야 하는 경우에는 스풀된 데이터를 삭제하고 다시 바인딩된 입력을 다시 검색하여 스풀 개체를 다시 작성합니다.If rebinding is needed, the spooled data is discarded and the spool object is rebuilt by rescanning the (rebound) input. Lazy Spool 연산자는 스풀 파일을 "지연" 방식으로 작성합니다. 즉, 스풀의 부모 연산자가 행을 요청할 때마다 스풀 연산자는 한 번에 모든 행을 사용하는 대신 입력 연산자로부터 하나의 행을 받아 스풀에 저장합니다.The Lazy Spool operator builds its spool file in a "lazy" manner, that is, each time the spool's parent operator asks for a row, the spool operator gets a row from its input operator and stores it in the spool, rather than consuming all rows at once. Lazy Spool은 논리 연산자입니다.Lazy Spool is a logical operator.
없음None Left Anti Semi JoinLeft Anti Semi Join Left Anti Semi Join 연산자는 두 번째(최하위) 입력에 일치 행이 없는 경우 첫 번째(최상위) 입력으로부터 각 행을 반환합니다.The Left Anti Semi Join operator returns each row from the first (top) input when there is no matching row in the second (bottom) input. Argument 열에 조인 조건자가 없으면 각 행이 일치하는 행입니다.If no join predicate exists in the Argument column, each row is a matching row. Left Anti Semi Join 는 논리 연산자입니다.Left Anti Semi Join is a logical operator.
없음None Left Outer JoinLeft Outer Join Left Outer Join 연산자는 첫 번째(최상위) 입력과 두 번째(최하위) 입력의 조인에 부합되는 각 행을 반환합니다.The Left Outer Join operator returns each row that satisfies the join of the first (top) input with the second (bottom) input. 또한 첫 번째 입력에서 두 번째 입력에 일치 행이 없는 행을 모두 반환합니다.It also returns any rows from the first input that had no matching rows in the second input. 두 번째 입력에서 일치되지 않는 행은 Null 값으로 반환됩니다.The nonmatching rows in the second input are returned as null values. Argument 열에 조인 조건자가 없으면 각 행이 일치하는 행입니다.If no join predicate exists in the Argument column, each row is a matching row. Left Outer Join 는 논리 연산자입니다.Left Outer Join is a logical operator.
없음None Left Semi JoinLeft Semi Join Left Semi Join 연산자는 첫 번째(최상위) 입력에 일치하는 행이 있는 경우 두 번째(최하위) 입력의 각 행을 반환합니다.The Left Semi Join operator returns each row from the first (top) input when there is a matching row in the second (bottom) input. Argument 열에 조인 조건자가 없으면 각 행이 일치하는 행입니다.If no join predicate exists in the Argument column, each row is a matching row. Left Semi Join 는 논리 연산자입니다.Left Semi Join is a logical operator.
Log row scan 연산자 아이콘Log row scan operator icon Log Row ScanLog Row Scan Log Row Scan 연산자는 트랜잭션 로그를 검색합니다.The Log Row Scan operator scans the transaction log. Log Row Scan 은 논리 및 물리 연산자입니다.Log Row Scan is a logical and physical operator.
Merge interval 연산자 아이콘Merge interval operator icon Merge IntervalMerge Interval Merge Interval 연산자는 겹칠 수도 있는 여러 개의 간격을 병합하여 최소한의 겹치지 않는 간격을 생성하는데, 이 간격은 인덱스 항목 검색에 사용됩니다.The Merge Interval operator merges multiple (potentially overlapping) intervals to produce minimal, nonoverlapping intervals that are then used to seek index entries. 이 연산자는 주로 이 연산자가 병합하는 간격(행에서 열로 표시됨)을 만드는 Constant Scan 연산자보다 한 개 이상의 Compute Scalar 연산자 위에 나타납니다.This operator typically appears above one or more Compute Scalar operators over Constant Scan operators, which construct the intervals (represented as columns in a row) that this operator merges. Merge Interval 은 논리 및 물리 연산자입니다.Merge Interval is a logical and physical operator.
Merge join 연산자 아이콘Merge join operator icon 병합 조인Merge Join Merge Join 연산자는 내부 조인, 왼쪽 우선 외부 조인, 왼쪽 세미 조인, 왼쪽 앤티 세미 조인, 오른쪽 우선 외부 조인, 오른쪽 세미 조인, 오른쪽 앤티 세미 조인 및 합집합 논리 연산을 수행합니다.The Merge Join operator performs the inner join, left outer join, left semi join, left anti semi join, right outer join, right semi join, right anti semi join, and union logical operations.

Argument 열에서 Merge Join 연산자는 일 대 다 조인을 수행하는 경우에는 MERGE:() 조건자를 포함하고 다 대 다 조인을 수행하는 경우에는 MANY-TO-MANY MERGE:() 조건자를 포함합니다.In the Argument column, the Merge Join operator contains a MERGE:() predicate if the operation is performing a one-to-many join, or a MANY-TO-MANY MERGE:() predicate if the operation is performing a many-to-many join. Argument 열에는 연산을 수행하기 위해 사용되는 쉼표로 구분된 열 목록도 포함됩니다.The Argument column also includes a comma-separated list of columns used to perform the operation. Merge Join 연산자에는 쿼리 계획에 명시적인 정렬 연산을 삽입하여 해당 열을 기준으로 정렬된 2개의 입력이 필요합니다.The Merge Join operator requires two inputs sorted on their respective columns, possibly by inserting explicit sort operations into the query plan. Merge Join은 명시적인 정렬이 필요하지 않은 경우 예를 들면 데이터베이스에 적합한 B-트리 인덱스가 있거나 병합 조인과 롤업을 통한 그룹화와 같은 여러 개의 연산에 대해 정렬 순서를 사용할 수 있는 경우에 특히 효과적입니다.Merge join is particularly effective if explicit sorting is not required, for example, if there is a suitable B-tree index in the database or if the sort order can be exploited for multiple operations, such as a merge join and grouping with roll up. Merge Join 은 물리 연산자입니다.Merge Join is a physical operator.
Nested loops 연산자 아이콘Nested loops operator icon Nested LoopsNested Loops Nested Loops 연산자는 내부 조인, 왼쪽 우선 외부 조인, 왼쪽 세미 조인 및 왼쪽 앤티 세미 조인 논리 연산을 수행합니다.The Nested Loops operator performs the inner join, left outer join, left semi join, and left anti semi join logical operations. 중첩 루프 조인에서는 대개 인덱스를 사용하여 내부 테이블에서 외부 테이블의 각 행을 검색합니다.Nested loops joins perform a search on the inner table for each row of the outer table, typically using an index. 쿼리 프로세서는 예상 비용에 따라 내부 입력을 통한 인덱스 검색의 위치 정확성을 높이기 위해 외부 입력을 정렬할지 여부를 결정합니다.The query processor decides, based on anticipated costs, whether to sort the outer input in order to improve locality of the searches on the index over the inner input. 수행 중인 논리 연산에 따라 Argument 열의 조건자(선택 사항)를 충족하는 모든 행이 반환됩니다.Any rows that satisfy the (optional) predicate in the Argument column are returned as applicable, based on the logical operation being performed. Nested Loops 는 물리 연산자입니다.Nested Loops is a physical operator.
Nonclustered index delete 연산자 아이콘Nonclustered index delete operator icon Nonclustered Index DeleteNonclustered Index Delete Nonclustered Index Delete 연산자는 Argument 열에 지정된 비클러스터형 인덱스에서 입력 행을 삭제합니다.The Nonclustered Index Delete operator deletes input rows from the nonclustered index specified in the Argument column. Nonclustered Index Delete 는 물리 연산자입니다.Nonclustered Index Delete is a physical operator.
Nonclustered index insert 연산자 아이콘Nonclustered index insert operator icon Index InsertIndex Insert Index Insert 연산자는 입력으로부터의 행을 Argument 열에 지정된 비클러스터형 인덱스에 삽입합니다.The Index Insert operator inserts rows from its input into the nonclustered index specified in the Argument column. Argument 열에는 각 열의 설정 값을 나타내는 SET:() 조건자도 포함됩니다.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Index Insert 는 물리 연산자입니다.Index Insert is a physical operator.
Nonclustered index scan 연산자 아이콘Nonclustered index scan operator icon Index ScanIndex Scan Index Scan 연산자는 Argument 열에 지정한 비클러스터형 인덱스의 모든 행을 검색합니다.The Index Scan operator retrieves all rows from the nonclustered index specified in the Argument column. 선택 사항인 WHERE:() 조건자가 Argument 열에 나타나면 조건자에 부합되는 행만 반환됩니다.If an optional WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Index Scan 은 논리 및 물리 연산자입니다.Index Scan is a logical and physical operator.
Nonclustered index seek 연산자 아이콘Nonclustered index seek operator icon Index SeekIndex Seek Index Seek 연산자는 인덱스 검색 기능을 사용하여 비클러스터형 인덱스에서 행을 검색합니다.The Index Seek operator uses the seeking ability of indexes to retrieve rows from a nonclustered index. Argument 열에는 사용할 비클러스터형 인덱스의 이름 및The Argument column contains the name of the nonclustered index being used. SEEK:() 조건자도 포함됩니다.It also contains the SEEK:() predicate. 저장소 엔진은 이 인덱스를 사용하여 SEEK:() 조건자에 부합되는 행만 처리합니다.The storage engine uses the index to process only those rows that satisfy the SEEK:() predicate. 필요에 따라 저장소 엔진이 SEEK:() 조건자에 부합되는 모든 행에 대한 평가를 수행할 WHERE:() 조건자가 포함될 수도 있습니다(이 수행을 위해 인덱스를 사용하지는 않음).It optionally may include a WHERE:() predicate, which the storage engine will evaluate against all rows that satisfy the SEEK:() predicate (it does not use the indexes to do this). Argument 열에 ORDERED 절이 있으면 쿼리 프로세서는 클러스터형 인덱스가 정렬한 순서대로 행을 반환합니다.If the Argument column contains the ORDERED clause, the query processor has determined that the rows must be returned in the order in which the nonclustered index has sorted them. ORDERED 절이 없으면 저장소 엔진이 인덱스를 최적의 방법(출력 정렬은 보장하지 않음)으로 검색합니다.If the ORDERED clause is not present, the storage engine searches the index in the optimal way (which does not guarantee that the output will be sorted). 출력 순서를 유지하는 것보다는 정렬되지 않은 출력을 만드는 것이 더 효율적일 수 있습니다.Allowing the output to retain its ordering may be less efficient than producing nonsorted output. Index Seek 은 논리 및 물리 연산자입니다.Index Seek is a logical and physical operator.
Nonclustered index spool 연산자 아이콘Nonclustered index spool operator icon Index SpoolIndex Spool Index Spool 물리 연산자는 Argument 열에 SEEK:() 조건자를 포함합니다.The Index Spool physical operator contains a SEEK:() predicate in the Argument column. Index Spool 연산자는 입력 행을 검색하고 각 행의 복사본을 숨겨진 스풀 파일( tempdb 데이터베이스에 저장되어 쿼리 사용 기간 중에만 존재함)에 배치하며 행에 대해 비클러스터형 인덱스를 작성합니다.The Index Spool operator scans its input rows, placing a copy of each row in a hidden spool file (stored in the tempdb database and existing only for the lifetime of the query), and builds a nonclustered index on the rows. 이렇게 하면 인덱스의 검색 기능을 사용하여 SEEK:() 조건자에 부합되는 행만 출력할 수 있습니다.This allows you to use the seeking capability of indexes to output only those rows that satisfy the SEEK:() predicate. 예를 들어 Nested Loops 연산자로 연산자를 다시 돌리지만 다시 바인딩할 필요가 없을 경우 입력 사항을 다시 검색하는 대신 스풀된 데이터를 사용합니다.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input.
Nonclustered index update 연산자 아이콘Nonclustered index update operator icon Nonclustered Index UpdateNonclustered Index Update Nonclustered Index Update 물리 연산자는 Argument 열에 지정된 비클러스터형 인덱스에 입력된 내용에서 행을 업데이트합니다.The Nonclustered Index Update physical operator updates rows from its input in the nonclustered index specified in the Argument column. SET:() 조건자가 있는 경우에는 업데이트된 각 열이 이 값으로 설정됩니다.If a SET:() predicate is present, each updated column is set to this value. Nonclustered Index Update 는 물리 연산자입니다.Nonclustered Index Update is a physical operator.
Online index insert 연산자 아이콘Online index insert operator icon Online Index InsertOnline Index Insert Online Index Insert 물리 연산자는 인덱스, 만들기, 변경 또는 삭제 작업이 온라인으로 수행됨을 나타냅니다.The Online Index Insert physical operator indicates that an index create, alter, or drop operation is performed online. 즉, 사용자가 인덱스 작업 동안 기본 테이블 데이터를 사용할 수 있습니다.That is, the underlying table data remains available to users during the index operation.
없음None ParallelismParallelism Parallelism 연산자(또는 교환 반복기)는 Distribute Streams, Gather Streams 및 Repartition Streams 논리 연산을 수행합니다.The Parallelism operator (or Exchange Iterator) performs the distribute streams, gather streams, and repartition streams logical operations. Argument 열에는 PARTITION COLUMNS:() 조건자와 쉼표로 구분된 분할될 열 목록이 함께 포함될 수 있습니다.The Argument columns can contain a PARTITION COLUMNS:() predicate with a comma-separated list of the columns being partitioned. 또한 Argument 열에는 분할 동안 정렬 순서를 지정할 열을 나열하는 ORDER BY:() 조건자도 포함될 수 있습니다.The Argument columns can also contain an ORDER BY:() predicate, listing the columns to preserve the sort order for during partitioning. Parallelism 은 물리 연산자입니다.Parallelism is a physical operator. Parallelism 연산자에 대한 자세한 내용은 Craig Freedman의 블로그 시리즈를 참조하세요.For more information about the Parallelism operator, see Craig Freedman’s blog series.

참고: 쿼리가 병렬 쿼리로 컴파일되었지만 런타임에 직렬 쿼리로 실행되는 경우 SET STATISTICS XML이나 SQL Server Management StudioSQL Server Management Studio실제 실행 계획 포함 옵션을 사용하여 생성된 실행 계획 출력에는 Parallelism 연산자의 RunTimeInformation 요소가 포함되지 않습니다.Note: If a query has been compiled as a parallel query, but at run time it is run as a serial query, the Showplan output generated by SET STATISTICS XML or by using the Include Actual Execution Plan option in SQL Server Management StudioSQL Server Management Studio will not contain the RunTimeInformation element for the Parallelism operator. SET STATISTICS PROFILE 출력에서 실제 행 개수와 실제 실행 수는 Parallelism 연산자에 대해 0으로 표시됩니다.In SET STATISTICS PROFILE output, the actual row counts and actual number of executes will display zeroes for the Parallelism operator. 두 조건 중 하나가 발생할 경우 Parallelism 연산자가 쿼리 컴파일 중에만 사용되었으며 런타임 쿼리 계획에는 사용되지 않았음을 의미합니다.When either condition occurs, it means that the Parallelism operator was only used during query compilation and not in the run-time query plan. 서버에 동시 로드 양이 많으면 병렬 쿼리 계획이 직렬로 실행될 수 있습니다.Note that sometimes parallel query plans are run in serial if there is a high concurrent load on the server.
Parameter table scan 연산자 아이콘Parameter table scan operator icon Parameter Table ScanParameter Table Scan Parameter Table Scan 연산자는 현재 쿼리에서 매개 변수의 역할을 하는 테이블을 검색합니다.The Parameter Table Scan operator scans a table that is acting as a parameter in the current query. 일반적으로 이 연산자는 저장 프로시저 안에서 INSERT 쿼리에 사용합니다.Typically, this is used for INSERT queries within a stored procedure. Parameter Table Scan 은 논리 및 물리 연산자입니다.Parameter Table Scan is a logical and physical operator.
없음None Partial AggregatePartial Aggregate Partial Aggregate 는 병렬 계획에 사용됩니다.Partial Aggregate is used in parallel plans. Partial Aggregate는 최대한 많은 입력 행에 집계 함수를 적용하여 디스크 쓰기("spill"이라고 함)가 필요가 없도록 합니다.It applies an aggregation function to as many input rows as possible so that writing to disk (known as a "spill") is not necessary. Hash Match 는 파티션 집계를 구현하는 유일한 물리 연산자(반복자)입니다.Hash Match is the only physical operator (iterator) that implements partition aggregation. Partial Aggregate 는 논리 연산자입니다.Partial Aggregate is a logical operator.
Population query 커서 연산자 아이콘Population query cursor operator icon Population QueryPopulation Query Population Query 연산자는 커서가 열려 있을 때 커서의 작업 테이블을 채웁니다.The Population Query operator populates the work table of a cursor when the cursor is opened.
Refresh query 커서 연산자 아이콘Refresh query cursor operator icon Refresh QueryRefresh Query Refresh Query 연산자는 인출 버퍼에서 행에 대한 현재 데이터를 인출합니다.The Refresh Query operator fetches current data for rows in the fetch buffer.
Remote delete 연산자 아이콘Remote delete operator icon Remote DeleteRemote Delete Remote Delete 연산자는 원격 개체로부터의 입력 행을 삭제합니다.The Remote Delete operator deletes the input rows from a remote object. Remote Delete 은 논리 및 물리 연산자입니다.Remote Delete is a logical and physical operator.
remote index seek 실행 계획 연산자remote index seek showplan operator Remote Index ScanRemote Index Scan Remote Index Scan 연산자는 Argument 열에 지정한 원격 인덱스를 검색합니다.The Remote Index Scan operator scans the remote index specified in the Argument column. Remote Insert Scan 은 논리/물리 연산자입니다.Remote Index Scan is a logical and physical operator.
remote index seek 실행 계획 연산자remote index seek showplan operator Remote Index SeekRemote Index Seek Remote Index Seek 연산자는 원격 인덱스 개체의 검색 기능을 사용하여 행을 검색합니다.The Remote Index Seek operator uses the seeking ability of a remote index object to retrieve rows. Argument 열에는 사용할 원격 인덱스의 이름 및 SEEK:()가 있습니다.The Argument column contains the name of the remote index being used and the SEEK:() predicate. Remote Index Seek 는 논리/물리 연산자입니다.Remote Index Seek is a logical physical operator.
Remote insert 연산자 아이콘Remote insert operator icon Remote InsertRemote Insert Remote Insert 연산자는 입력 행을 원격 개체에 삽입합니다.The Remote Insert operator inserts the input rows into a remote object. Remote Insert 는 논리/물리 연산자입니다.Remote Insert is a logical and physical operator.
Remote query 연산자 아이콘Remote query operator icon Remote QueryRemote Query Remote Query 연산자는 쿼리를 원격 원본으로 전송합니다.The Remote Query operator submits a query to a remote source. 원격 서버로 보내진 쿼리의 텍스트는 Argument 열에 표시됩니다.The text of the query sent to the remote server appears in the Argument column. Remote Query 은 논리 및 물리 연산자입니다.Remote Query is a logical and physical operator.
Remote scan 연산자 아이콘Remote scan operator icon Remote ScanRemote Scan Remote Scan 연산자는 원격 개체를 검색합니다.The Remote Scan operator scans a remote object. 원격 개체 이름은 Argument 열에 표시됩니다.The name of the remote object appears in the Argument column. Remote Scan 은 논리 및 물리 연산자입니다.Remote Scan is a logical and physical operator.
Remote update 연산자 아이콘Remote update operator icon Remote UpdateRemote Update Remote Update 연산자는 원격 개체에서 입력 행을 업데이트합니다.The Remote Update operator updates the input rows in a remote object. Remote Update 은 논리 및 물리 연산자입니다.Remote Update is a logical and physical operator.
Repartition streams parallelism 연산자 아이콘Repartition streams parallelism operator icon Repartition StreamsRepartition Streams Repartition Streams 연산자(또는 교환 반복기)는 여러 개의 스트림을 사용하며 여러 개의 레코드 스트림을 만듭니다.The Repartition Streams operator (or exchange iterator) consumes multiple streams and produces multiple streams of records. 레코드 내용과 형식은 변경되지 않습니다.The record contents and format are not changed. 쿼리 최적화 프로그램이 비트맵 필터를 사용하면 출력 스트림의 행 수가 줄어듭니다.If the query optimizer uses a bitmap filter, the number of rows in the output stream is reduced. 입력 스트림의 각 레코드가 한 개의 출력 스트림에 배치됩니다.Each record from an input stream is placed into one output stream. 이 연산자가 순서를 그대로 유지하는 경우에는 모든 입력 스트림이 정렬되어 여러 개의 정렬된 출력 스트림으로 병합되어야 합니다.If this operator is order preserving, all input streams must be ordered and merged into several ordered output streams. 출력이 분할되는 경우에는 Argument 열에 PARTITION COLUMNS:() 조건자와 분할 열이 포함됩니다. 출력이 정렬되는 경우에는 Argument 열에 ORDER BY:() 조건자와 정렬될 열이 포함됩니다.If the output is partitioned, the Argument column contains a PARTITION COLUMNS:() predicate and the partitioning columns.If the output is ordered, the Argument column contains an ORDER BY:() predicate and the columns being ordered. Repartition Streams 는 논리 연산자입니다.Repartition Streams is a logical operator. 이 연산자는 병렬 쿼리 계획에서만 사용됩니다.The operator is used only in parallel query plans.
Result 언어 요소 아이콘Result language element icon 결과Result Result 연산자는 쿼리 계획의 끝에 반환되는 데이터입니다.The Result operator is the data returned at the end of a query plan. 이는 일반적으로 실행 계획의 루트 요소입니다.This is usually the root element of a Showplan. Result 는 언어 요소입니다.Result is a language element.
RID lookup 연산자 아이콘RID lookup operator icon RID LookupRID Lookup RID Lookup 은 제공된 RID(행 식별자)를 사용하여 힙을 조회하는 책갈피 조회입니다.RID Lookup is a bookmark lookup on a heap using a supplied row identifier (RID). Argument 열에는 테이블의 행을 조회하는 데 사용되는 책갈피 레이블 및 행을 조회할 테이블의 이름이 포함됩니다.The Argument column contains the bookmark label used to look up the row in the table and the name of the table in which the row is looked up. RID Lookup 은 항상 NESTED LOOP JOIN과 함께 사용됩니다.RID Lookup is always accompanied by a NESTED LOOP JOIN. RID Lookup 는 물리 연산자입니다.RID Lookup is a physical operator. 책갈피 조회에 대한 자세한 내용은 MSDN SQL Server 블로그의 "책갈피 조회(Bookmark Lookup)"를 참조하십시오.For more information about bookmark lookups, see "Bookmark Lookup" on the MSDN SQL Server blog.
없음None Right Anti Semi JoinRight Anti Semi Join Right Anti Semi Join 연산자는 첫 번째(최상위) 입력에 일치하는 행이 없는 경우 두 번째(최하위) 입력의 각 행을 출력합니다.The Right Anti Semi Join operator outputs each row from the second (bottom) input when a matching row in the first (top) input does not exist. 일치하는 행은 Argument 열의 조건자에 부합되는 행으로 정의됩니다(조건자가 없으면 각 행이 일치 행임).A matching row is defined as a row that satisfies the predicate in the Argument column (if no predicate exists, each row is a matching row). Right Anti Semi Join 는 논리 연산자입니다.Right Anti Semi Join is a logical operator.
없음None Right Outer JoinRight Outer Join Right Outer Join 연산자는 두 번째(최하위) 입력 중에서 첫 번째(최상위) 입력과 일치하는 각 행을 반환합니다.The Right Outer Join operator returns each row that satisfies the join of the second (bottom) input with each matching row from the first (top) input. 또한 첫 번째 입력과 일치하지 않는 두 번째 입력의 모든 행도 NULL로 조인하여 반환합니다.It also returns any rows from the second input that had no matching rows in the first input, joined with NULL. Argument 열에 조인 조건자가 없으면 각 행이 일치하는 행입니다.If no join predicate exists in the Argument column, each row is a matching row. Right Outer Join 는 논리 연산자입니다.Right Outer Join is a logical operator.
없음None Right Semi JoinRight Semi Join Right Semi Join 연산자는 첫 번째(최상위) 입력에 일치하는 행이 있는 경우 두 번째(최하위) 입력의 각 행을 반환합니다.The Right Semi Join operator returns each row from the second (bottom) input when there is a matching row in the first (top) input. Argument 열에 조인 조건자가 없으면 각 행이 일치하는 행입니다.If no join predicate exists in the Argument column, each row is a matching row. Right Semi Join 는 논리 연산자입니다.Right Semi Join is a logical operator.
Row count spool 연산자 아이콘Row count spool operator icon Row Count SpoolRow Count Spool Row Count Spool 연산자는 입력을 검색하여 얼마나 많은 행이 있는지 계산하고 데이터는 포함되지 않은 상태로 그 수만큼의 행을 반환합니다.The Row Count Spool operator scans the input, counting how many rows are present and returning the same number of rows without any data in them. 이 연산자는 행에 포함된 데이터보다는 행 자체의 존재 유무를 검사하는 것이 중요한 경우에 사용합니다.This operator is used when it is important to check for the existence of rows, rather than the data contained in the rows. 예를 들어 Nested Loops 연산자는 Left Semi Join 연산을 수행하고 조인 조건자는 내부 입력에 적용되는 경우 Row Count Spool이 Nested Loops 연산자의 내부 입력의 최상위에 배치될 수 있습니다.For example, if a Nested Loops operator performs a left semi join operation and the join predicate applies to inner input, a row count spool may be placed at the top of the inner input of the Nested Loops operator. 그러면 내부의 실제 데이터가 필요하지 않기 때문에 Nested Loops 연산자가 Row Count Spool에 의해 출력되는 행 수를 보고 외부 행의 반환 여부를 결정할 수 있습니다.Then the Nested Loops operator can determine how many rows are output by the row count spool (because the actual data from the inner side is not needed) to determine whether to return the outer row. Row Count Spool 은 물리 연산자입니다.Row Count Spool is a physical operator.
Segment 연산자 아이콘Segment operator icon SegmentSegment Segment 는 물리 및 논리 연산자입니다.Segment is a physical and a logical operator. 이 연산자는 하나 이상의 열 값에 따라 입력 집합을 세그먼트로 나눕니다.It divides the input set into segments based on the value of one or more columns. 이러한 열은 Segment 연산자의 인수로 표시됩니다.These columns are shown as arguments in the Segment operator. 그런 다음 연산자는 한 번에 한 세그먼트씩 출력합니다.The operator then outputs one segment at a time.
없음None Segment RepartitionSegment Repartition 병렬 쿼리 계획에는 반복자라는 개념 영역이 존재하기도 합니다.In a parallel query plan, sometimes there are conceptual regions of iterators. 이 영역에 있는 모든 반복자는 병렬 스레드에 의해 실행될 수 있습니다.All of the iterators within such a region can be executed by parallel threads. 영역 자체는 직렬로 실행되어야 합니다.The regions themselves must be executed serially. 개별 영역 내에 있는 일부 Parallelism 반복자를 Branch Repartition이라고 합니다.Some of the Parallelism iterators within an individual region are called Branch Repartition. 이러한 두 영역의 경계에 있는 Parallelism 반복자를 Segment Repartition이라고 합니다.The Parallelism iterator at the boundary of two such regions is called Segment Repartition. Branch RepartitionSegment Repartition 은 논리 연산자입니다.Branch Repartition and Segment Repartition are logical operators.
Sequence 연산자 아이콘Sequence operator icon 시퀀스Sequence Sequence 연산자는 광범위한 업데이트 계획을 실행합니다.The Sequence operator drives wide update plans. 각 입력은 위에서 아래 방향으로 차례로 실행됩니다.Functionally, it executes each input in sequence (top to bottom). 각 입력은 대개 서로 다른 개체의 업데이트이며Each input is usually an update of a different object. 마지막(최하위) 입력으로부터의 행만 반환됩니다.It returns only those rows that come from its last (bottom) input. Sequence 은 논리 및 물리 연산자입니다.Sequence is a logical and physical operator.
Sequence project 연산자 아이콘Sequence project operator icon Sequence ProjectSequence Project Sequence Project 연산자는 열을 추가하여 정렬된 집합에 대한 계산을 수행합니다.The Sequence Project operator adds columns to perform computations over an ordered set. 이 연산자는 하나 이상의 열 값에 따라 입력 집합을 세그먼트로 나눕니다.It divides the input set into segments based on the value of one or more columns. 그런 다음 연산자는 한 번에 한 세그먼트씩 출력합니다.The operator then outputs one segment at a time. 이런 열은 Sequence Project 연산자에서 인수로 표시됩니다.These columns are shown as arguments in the Sequence Project operator. Sequence Project 은 논리 및 물리 연산자입니다.Sequence Project is a logical and physical operator.
Snapshot 커서 연산자 아이콘Snapshot cursor operator icon 스냅숏Snapshot Snapshot 연산자는 다른 연산자가 만든 변경 내용을 확인하지 않는 커서를 만듭니다.The Snapshot operator creates a cursor that does not see changes made by others.
Sort 연산자 아이콘Sort operator icon SortSort Sort 연산자는 모든 들어오는 행을 정렬합니다.The Sort operator sorts all incoming rows. Argument 열에는 이 작업으로 중복 요소가 제거되면 DISTINCT ORDER BY:() 조건자가 포함되거나 정렬될 열의 쉼표로 구분된 목록이 있으면 ORDER BY:() 조건자가 포함됩니다.The Argument column contains either a DISTINCT ORDER BY:() predicate if duplicates are removed by this operation, or an ORDER BY:() predicate with a comma-separated list of the columns being sorted. 열이 오름차순으로 정렬되는 경우에는 ASC 값, 내림차순으로 정렬되는 경우에는 DESC 값이 열의 접두사로 사용됩니다.The columns are prefixed with the value ASC if the columns are sorted in ascending order, or the value DESC if the columns are sorted in descending order. Sort 는 논리 및 물리 연산자입니다.Sort is a logical and physical operator.
Split 연산자 아이콘Split operator icon SplitSplit Split 연산자는 업데이트 과정을 최적화하는 데 사용됩니다.The Split operator is used to optimize update processing. 즉, 각 업데이트 작업을 삭제 및 삽입 작업으로 분할합니다.It splits each update operation into a delete and an insert operation. Split 은 논리 및 물리 연산자입니다.Split is a logical and physical operator.
Spool 연산자 아이콘Spool operator icon SpoolSpool Spool 연산자는 tempdb 데이터베이스에 중간 쿼리 결과를 저장합니다.The Spool operator saves an intermediate query result to the tempdb database.
Stream aggregate 연산자 아이콘Stream aggregate operator icon Stream AggregateStream Aggregate Stream Aggregate 연산자는 하나 이상의 열로 행을 그룹화한 후 쿼리가 반환한 하나 이상의 집계 식을 계산합니다.The Stream Aggregate operator groups rows by one or more columns and then calculates one or more aggregate expressions returned by the query. 이 연산자의 출력은 쿼리에서 이후 연산자에 의해 참조되거나 클라이언트에 반환되거나 둘 다 수행될 수 있습니다.The output of this operator can be referenced by later operators in the query, returned to the client, or both. Stream Aggregate 연산자를 사용하려면 입력이 그룹 내의 열을 기준으로 정렬되어야 합니다.The Stream Aggregate operator requires input ordered by the columns within its groups. 최적화 프로그램은 앞서 Sort 연산자 또는 정렬된 Index Seek나 Index Scan을 통해 데이터를 아직 정렬하지 않은 경우 이 연산자보다 먼저 Sort 연산자를 사용합니다.The optimizer will use a Sort operator prior to this operator if the data is not already sorted due to a prior Sort operator or due to an ordered index seek or scan. SHOWPLAN_ALL 문 또는 SQL Server Management StudioSQL Server Management Studio의 그래픽 실행 계획에서는 GROUP BY 조건자에 있는 열이 Argument 열에 나열되고 집계 식이 Defined Values 열에 나열됩니다.In the SHOWPLAN_ALL statement or the graphical execution plan in SQL Server Management StudioSQL Server Management Studio, the columns in the GROUP BY predicate are listed in the Argument column, and the aggregate expressions are listed in the Defined Values column. Stream Aggregate 는 물리 연산자입니다.Stream Aggregate is a physical operator.
Switch 연산자 아이콘Switch operator icon 스위치Switch 스위치n 개의 입력을 갖는 특수한 유형의 연결 반복기입니다.Switch is a special type of concatenation iterator that has n inputs. Switch 연산자에 식이 연결되어 있습니다.An expression is associated with each Switch operator. 식의 반환 값(0과 n-1 사이)에 따라 스위치 는 적절한 입력 스트림을 출력 스트림으로 복사합니다.Depending on the return value of the expression (between 0 and n-1), Switch copies the appropriate input stream to the output stream. Switch 의 용도 중 하나는 TOP 연산자 같은 특정 연산자와 빠른 전진 커서가 관련된 쿼리 계획을 구현하는 것입니다.One use of Switch is to implement query plans involving fast forward cursors with certain operators such as the TOP operator. Switch 는 논리 연산자이면서 물리 연산자입니다.Switch is both a logical and physical operator.
Table delete 연산자 아이콘Table delete operator icon Table DeleteTable Delete Table Delete 물리 연산자는 Argument 열에 지정된 테이블에서 행을 삭제합니다.The Table Delete physical operator deletes rows from the table specified in the Argument column of the query execution plan.
Table insert 연산자 아이콘Table insert operator icon Table InsertTable Insert Table Insert 연산자는 입력의 행을 쿼리 실행 계획의 Argument 열에 지정된 테이블에 삽입합니다.The Table Insert operator inserts rows from its input into the table specified in the Argument column of the query execution plan. Argument 열에는 각 열의 설정 값을 나타내는 SET:() 조건자도 포함됩니다.The Argument column also contains a SET:() predicate, which indicates the value to which each column is set. Table Insert 에 삽입 값에 대한 자식이 없는 경우 삽입된 행을 Insert 연산자 자체에서 가져옵니다.If Table Insert has no children for insert values, then the row inserted is taken from the Insert operator itself. Table Insert 는 물리 연산자입니다.Table Insert is a physical operator.
Table merge 연산자Table merge operator Table MergeTable Merge Table Merge 연산자는 병합 데이터 스트림을 힙에 적용합니다.The Table Merge operator applies a merge data stream to a heap. 이 연산자는 연산자의 Argument 열에서 지정한 테이블의 행을 삭제, 업데이트 또는 삽입합니다.The operator deletes, updates, or inserts rows in the table specified in the Argument column of the operator. 연산자의 Argument 열에서 지정한 ACTION 열의 런타임 값에 따라 실제 작업이 수행됩니다.The actual operation performed depends on the run-time value of the ACTION column specified in the Argument column of the operator. Table Merge 는 물리 연산자입니다.Table Merge is a physical operator.
Table scan 연산자 아이콘Table scan operator icon Table ScanTable Scan Table Scan 연산자는 쿼리 실행 계획의 Argument 열에 지정된 테이블의 모든 행을 검색합니다.The Table Scan operator retrieves all rows from the table specified in the Argument column of the query execution plan. WHERE:() 조건자가 Argument 열에 나타나면 조건자에 부합되는 행만 반환됩니다.If a WHERE:() predicate appears in the Argument column, only those rows that satisfy the predicate are returned. Table Scan 은 논리 및 물리 연산자입니다.Table Scan is a logical and physical operator.
Table spool 연산자 아이콘Table spool operator icon Table SpoolTable Spool Table Spool 연산자는 입력을 검색하고 각 행의 복사본을 숨겨진 스풀 테이블에 배치합니다. 이 스풀 테이블은 tempdb 데이터베이스에 저장되어 쿼리 사용 기간 중에만 존재합니다.The Table Spool operator scans the input and places a copy of each row in a hidden spool table that is stored in the tempdb database and existing only for the lifetime of the query. 예를 들어 Nested Loops 연산자로 연산자를 다시 돌리지만 다시 바인딩할 필요가 없을 경우 입력 사항을 다시 검색하는 대신 스풀된 데이터를 사용합니다.If the operator is rewound (for example, by a Nested Loops operator) but no rebinding is needed, the spooled data is used instead of rescanning the input. Table Spool 은 물리 연산자입니다.Table Spool is a physical operator.
Table update 연산자 아이콘Table update operator icon Table UpdateTable Update Table Update 물리 연산자는 쿼리 실행 계획의 Argument 열에 지정된 테이블의 입력 행을 업데이트합니다.The Table Update physical operator updates input rows in the table specified in the Argument column of the query execution plan. SET:() 조건자는 각 업데이트된 열의 값을 결정합니다.The SET:() predicate determines the value of each updated column. 이러한 값은 SET 절 또는 이 연산자의 다른 곳과 이 쿼리 내의 다른 곳에서 참조될 수 있습니다.These values may be referenced in the SET clause or elsewhere within this operator as well as elsewhere within this query.
Table-valued function 연산자 아이콘Table-valued function operator icon Table-valued FunctionTable-valued Function Table-valued Function 연산자는 테이블 반환 함수( Transact-SQLTransact-SQL 또는 CLR)를 계산하고 결과 행을 tempdb 데이터베이스에 저장합니다.The Table-valued Function operator evaluates a table-valued function (either Transact-SQLTransact-SQL or CLR), and stores the resulting rows in the tempdb database. 부모 반복자에서 행을 요청하면 테이블 반환 함수tempdb에서 해당 행을 반환합니다.When the parent iterators request the rows, Table-valued Function returns the rows from tempdb.

테이블 반환 함수를 호출하는 쿼리는 테이블 반환 함수 반복자로 쿼리 계획을 생성합니다.Queries with calls to table-valued functions generate query plans with the Table-valued Function iterator. 다양한 매개 변수 값으로테이블 반환 함수 를 계산할 수 있습니다.Table-valued Function can be evaluated with different parameter values:

-
테이블 반환 함수 XML 판독기 는 매개 변수로 XML BLOB을 입력하여 XML 문서순으로 정렬된 XML 노드를 나타내는 행 집합을 생성합니다.Table-valued Function XML Reader inputs an XML BLOB as a parameter and produces a rowset representing XML nodes in XML document order. 다른 입력 매개 변수를 사용하여 XML 문서의 일부만 반환하도록 XML 노드를 제한할 수도 있습니다.Other input parameters may restrict XML nodes returned to a subset of XML document.

-XPath 필터가 포함된 테이블 반환 함수 XML 판독기 는 XPath 식을 만족하는 XML 노드로 출력을 제한하는 특수한 유형의 XML 판독기 테이블 반환 함수 입니다.-Table Valued Function XML Reader with XPath filter is a special type of XML Reader Table-valued Function that restricts output to XML nodes satisfying an XPath expression.

테이블 반환 함수 는 논리/물리 연산자입니다.Table-valued Function is a logical and physical operator.
Top 연산자 아이콘Top operator icon TopTop Top 연산자는 입력을 검색하고 정렬 순서 등을 기준으로 행의 지정된 첫째 번호나 백분율만 반환합니다.The Top operator scans the input, returning only the first specified number or percent of rows, possibly based on a sort order. Argument 열에는 타이를 검사할 열 목록이 포함될 수 있습니다.The Argument column can contain a list of the columns that are being checked for ties. 업데이트 계획에서는 행 개수 제한을 보장하기 위해 Top 연산자를 사용합니다.In update plans, the Top operator is used to enforce row count limits. Top 은 논리 및 물리 연산자입니다.Top is a logical and physical operator.
없음None Top N SortTop N Sort Top N Sort 는 전체 결과 집합이 아니라 첫 번째 N 행만 필요하다는 점을 제외하면 Sort 반복자와 비슷합니다.Top N Sort is similar to the Sort iterator, except that only the first N rows are needed, and not the entire result set. N의 값이 작으면 SQL ServerSQL Server 쿼리 실행 엔진이 메모리에서 전체 정렬 작업을 수행하려 하고For small values of N, the SQL ServerSQL Server query execution engine attempts to perform the entire sort operation in memory. N의 값이 크면 N 을 매개 변수로 사용하지 않는 일반적인 정렬 방법으로 다시 정렬합니다.For large values of N, the query execution engine resorts to the more generic method of sorting to which N is not a parameter.
Extended 연산자(UDX) 아이콘Extended operator (UDX) icon UDXUDX 확장 연산자(UDX)는 SQL ServerSQL Server에서 여러 XQuery 및 XPath 연산 중 하나를 구현합니다.Extended Operators (UDX) implement one of many XQuery and XPath operations in SQL ServerSQL Server. 모든 UDX 연산자는 논리/물리 연산자입니다.All UDX operators are both logical and physical operators.

확장 연산자(UDX) FOR XML 은 XML 표현으로 입력되는 관계형 행 집합을 하나의 BLOB 열에 직렬화하여 한 행으로 출력합니다.Extended operator (UDX) FOR XML is used to serialize the relational row set it inputs into XML representation in a single BLOB column in a single output row. 이 연산자는 입력 순서에 따라 결과가 달라지는 XML 집계 연산자입니다.It is an order sensitive XML aggregation operator.

확장 연산자(UDX) XML SERIALIZER 는 입력 순서에 따라 결과가 달라지는 XML 집계 연산자입니다.Extended operator (UDX) XML SERIALIZER is an order sensitive XML aggregation operator. 이 연산자는 XML 문서 순서대로 입력된 XML 노드 또는 XQuery 스칼라 행을 하나의 XML BLOB 열로 직렬화하여 한 XML 행으로 출력합니다.It inputs rows representing XML nodes or XQuery scalars in XML document order and produces a serialized XML BLOB in a single XML column in a single output row.

확장 연산자(UDX) XML FRAGMENT SERIALIZER 는 XQuery 삽입 데이터 수정 확장에 삽입되는 XML 조각 입력 행을 처리하는 데 사용되는 특별한 유형의 XML SERIALIZER 입니다.Extended operator (UDX) XML FRAGMENT SERIALIZER is a special type of XML SERIALIZER that is used for processing input rows representing XML fragments being inserted in XQuery insert data modification extension.

확장 연산자(UDX) XQUERY STRING 은 XML 노드로 입력된 입력 행의 XQuery 문자열 값을 계산합니다.Extended operator (UDX) XQUERY STRING evaluates the XQuery string value of input rows representing XML nodes. 이 연산자는 입력 순서에 따라 결과가 달라지는 문자열 집계 연산자입니다.It is an order sensitive string aggregation operator. 입력된 문자열 값을 포함하는 XQuery 스칼라를 한 행으로 출력합니다.It outputs one row with columns representing the XQuery scalar that contains string value of the input.

확장 연산자(UDX) XQUERY LIST DECOMPOSER 는 XQuery 목록 분해 연산자입니다.Extended operator (UDX) XQUERY LIST DECOMPOSER is an XQuery list decomposition operator. 이 연산자는 XML 노드를 입력받아 각 행의 입력이 XSD 목록 유형인 경우 목록 요소 값을 포함하는 XQuery 스칼라를 각각 하나 이상의 행으로 생성합니다.For each input row representing an XML node it produces one or more rows each representing XQuery scalar containing a list element value if the input is of XSD list type.

확장 연산자(UDX) XQUERY DATA 는 XML 노드를 입력받아 입력 값에 대한 XQuery fn:data() 함수를 계산합니다.Extended operator (UDX) XQUERY DATA evaluates the XQuery fn:data() function on input representing XML nodes. 이 연산자는 입력 순서에 따라 결과가 달라지는 문자열 집계 연산자입니다.It is an order sensitive string aggregation operator. fn:data()의 결과를 포함하는 XQuery 스칼라를 열로 구성한 하나의 행을 출력합니다.It outputs one row with columns representing XQuery scalar that contains the result of fn:data().

확장 연산자(UDX) XQUERY CONTAINS 는 XML 노드를 입력받아 입력 값에 대한 XQuery fn:contains() 함수를 계산합니다.Extended operator XQUERY CONTAINS evaluates the XQuery fn:contains() function on input representing XML nodes. 이 연산자는 입력 순서에 따라 결과가 달라지는 문자열 집계 연산자입니다.It is an order sensitive string aggregation operator. fn:contains()의 결과를 포함하는 XQuery 스칼라를 열로 구성한 하나의 행을 출력합니다.It outputs one row with columns representing XQuery scalar that contains the result of fn:contains().

확장 연산자 UPDATE XML NODE 는 XML 유형에 대한 modify() 메서드로 XQuery 대체 데이터 수정 확장의 XML 노드를 업데이트합니다.Extended operator UPDATE XML NODE updates XML node in the XQuery replace data modification extension in the modify() method on XML type.
없음None UnionUnion Union 논리 연산자는 여러 개의 입력을 검색하여 검색된 각 행을 출력하고 중복 요소는 제거합니다.The Union operator scans multiple inputs, outputting each row scanned and removing duplicates. Union 은 논리 연산자입니다.Union is a logical operator.
Update(데이터베이스 엔진) 연산자 아이콘Update (Database Engine) operator icon UpdateUpdate Update 연산자는 쿼리 실행 계획의 Argument 열에 지정된 개체의 입력 내용에 따라 각 행을 업데이트합니다.The Update operator updates each row from its input in the object specified in the Argument column of the query execution plan. Update 는 논리 연산자입니다.Update is a logical operator. 물리 연산자는 Table Update, Index Update또는 Clustered Index Update입니다.The physical operator is Table Update, Index Update, or Clustered Index Update.
While 언어 요소 아이콘While language element icon WhileWhile While 연산자는 Transact-SQLTransact-SQL while 루프를 구현합니다.The While operator implements the Transact-SQLTransact-SQL while loop. While 은 언어 요소입니다.While is a language element
Table spool 연산자 아이콘Table spool operator icon Window SpoolWindow Spool Window Spool 연산자는 각 행을 행과 관련된 창을 나타내는 행 집합으로 확장합니다.The Window Spool operator expands each row into the set of rows that represents the window associated with it. 쿼리에서 OVER 절은 쿼리 결과 집합과 창 함수를 포함하는 창을 정의한 다음 창의 각 행에 대한 값을 계산합니다.In a query, the OVER clause defines the window within a query result set and a window function then computes a value for each row in the window. Window Spool 은 논리 및 물리 연산자입니다.Window Spool is a logical and physical operator.