1. Bookmark Lookup
-------------------------------------------------------------------------------------
- 책갈피(행 ID 또는 클러스터링 키)를 사용하여 Table이나 Clustered Index에서 해당 Row를 조회한다.
- SQL Server 2005이후 버전에서는 사용되지 않는다.
- Select하고자 하는 컬럼이 인덱스에 없을 경우 Non-Clustered Index의 Key값을 가지고 Heap 페이지
  혹은 Clustered Index가 있는 Table일 경우 Clustered Index를 조회하는 것을 의미한다.

  따라서 Heap이나 Clustered Index를 찾아가는 추가적인 Page I/O가 발생한다.(Key Lookup, RID Lookup 모두 해당)
  이는 마치 Oracle에서 Index영역에 저장되어 있는 rowid를 가지고 Table Block을 Access하는 과정과 같다.
  하지만 Select하고자 하는 컬럼이 모두 Index상에 존재할 경우, 
  즉 Covered Index일 경우에는 Bookmark Loopup이 발생하지 않는다.

 

2. Key Lookup
-------------------------------------------------------------------------------------
- Clustered Index가 있는 테이블의 Bookmark Lookup이다.
- 쿼리 옵티마이저가 단일 연산으로 Row를 조회할 수 없어서, Clustered Key를 이용하여 Clustered Index에서
  해당하는 데이터를 가져오는 연산이다.
- 실행 계획에서 Key Lookup연산이 있다는 것은 Covered Index 또는 Included Index로 성능을 개선할 여지가
  있음을 의미한다. 왜냐하면 Covered Index 와 Included Index는 쿼리에서 필요로 하는 컬럼을 모두 포함하기 때문에
   Key Lookup연산이 필요하지 않기 때문이다.
- 두개의 연산으로 부터 얻어진 결과를 병합하기 위해 항상 Nested Loops 연산을 동반한다.


3. RID Lookup
-------------------------------------------------------------------------------------
- Clustered Index가 없는 테이블의 Bookmark Lookup이다.
- 두개의 연산으로 부터 얻어진 결과를 병합하기 위해 항상 Nested Loops 연산을 동반한다.
- 물리연산자로써 제공된 RID(행 식별자)를 사용하여 Heap을 조회는 Bookmark Lookup이다.

 

4. Clustered Index Scan
-------------------------------------------------------------------------------------
- 쿼리에서 요청한 데이터를 조회하기 위해 Index 전 영역(혹은 대부분)을 Scan해 나가는 방식이다.
  Index Scan은 주로 넓은 범위의 Index영역을 조회할 때 발생하는데, 
  Index Seek처럼 랜덤 엑세스를 하는 것보다 검색이 유리하다.

 

5. Clustered Index Seek
-------------------------------------------------------------------------------------
- 인덱스의 전 영역 혹은 대부분의 영역을 순차적으로 스캔해 나가면 데이터를 조회하는 Index Scan과는 달리
  Index Seek는 주어진 Index의 Key 값을 근거로 필요한 데이터만 뽑아 온다.
- Clustered Index Seek는 Clustered Index Scan보다 훨씬 적은 비용이 든다.
- Index의 최하위 leaf level에 실제 데이터가 있기때문에 별도의 Data Page를 엑세스가 필요없다.

 


6. Non-Clustered Index Seek
-------------------------------------------------------------------------------------
- Clustered Index Seek와 마찬가지로 Index Key 값을 이용하여 찾고자 하는 Row에 직접 엑세스한다.
- Clustered Index를 사용하는 대신 Non-Clustered Index를 사용한다는 점을 제외하고는 Clustered Index Seek와
  검색 메커니즘이 같다. 단 Non-Clustered Index를 사용하면 추가적인 I/O가 발생하는 경우도 있어 일반적으로
  Clustered Index가 훨씬 효율적이다.

 


7. Table Scan
-------------------------------------------------------------------------------------
- Heap 혹은 Clustered Index가 없는 테이블을 쭉 읽어나가며 필요한 Row를 조회는 연산이다.
- 인덱스를 이용한 조회는 Bookmark Lookup이라는 추가적인 연산을 동반하기 때문에 테이블의 모든 행을 조회하는 경우에 Table Scan이 효율적이다.