Index Range Scan | 리프 블록까지 수직적으로 탐색 후 필요한 범위만 스캔 선두 컬럼을 가공하지 않은 상태로 조건절에 사용해야 함. |
Index Full Scan | 수직적 탐색 없이 인덱스 리프 블록을 처음부터 끝까지 수평적으로 탐색하는 방식 인덱스 선두 컬럼이 조건절에 없으면 옵티마이저는 Table Full Scand을 고려하는데, I/O를 줄일 수 있거나 정렬된 결과를 쉽게 얻을 수 있다면 Index Full Scan을 선택한다. |
Index Unique Scan | 수직적 탐색만으로 데이터 탐색 '=' 조건으로 탐색하는 경우 선택 |
Index Skip Scan | 루트 또는 브랜치 블록에서 읽은 컬럼 값 정보를 이용해 조건절에 부합하는 레코드를 포함할 가능성이 있는 리프블록만 골라서 액세스하여 탐색 인덱스 선두 컬럼 혹은 중간 컬럼이 조건절에 없어도 인덱스 활용 가능 조건절에 빠진 인덱스 선두 컬럼의 Distinct Value 개수가 적고 후행 컬럼의 Distinct Value 개수가 많을 때 유용 |
Index Fast Full Scan | 논리적인 인덱스 트리 구조를 무시하고 인덱스 세그먼트 전체를 Multiblock I/O 방식으로 스캔 속도는 빠르지만 인덱스 키 순서대로 정렬되지 않는다. 쿼리에 사용한 컬럼이 모두 인덱스에 포함돼 있을 때만 사용 가능 Index Range Scan 또는 Index Full Scan과 달리, 인덱스가 파티션 돼 있지 않더라도 병렬 쿼리가 가능 병렬 쿼리시 Direct Path I/O 방식을 사용하기 때문에 I/O 속도가 더 빨라짐 |
Index Range Scan Descending | Index Range Scan과 기본적으로 동일한 스캔 방식이나, 인덱스를 뒤에서부터 앞쪽으로 스캔하여 내림차순으로 정렬된다. |
[친절한 SQL 튜닝] 1장 SQL 처리 과정과 I/O (0) | 2024.10.10 |
---|