Oracle/튜닝

INDEX RANGE SCAN(MIN/MAX)

pbj1102 2022. 2. 11. 15:48
반응형

INDEX RANGE SCAN(MIN/MAX)

- RANGE SCAN 을 통해 MIN/MAX 값만 읽는 Operationn

 

해당 Operation 테스트를 위해 아래와 같이 결합인덱스를 생성한다. 

 

CREATE INDEX PRODUCTS_IDX ON PRODUCTS(PSIZE, PRICE);

 

[결합 인덱스 구조]

PSIZE, PRICE 컬럼 순으로 정렬되어 인덱스의 리프 블록에 저장된다. 

 

 

리프 블록을 다음과 같이 간략하게 표시

: PSIZE, PRICE, ROWID 순으로 정렬

 

[인덱스 리프블록]

                                                                                                                     PSIZE='XL'인 PRICE 최대값

PSIZE PRICE ROWID   PSIZE PRICE ROWID   PSIZE PRICE ROWID   PSIZE PRICE ROWID
2XL 1200     3XL 1450     L 1160     XL 1530  
2XL 1250     3XL 1500     S 1320     XL 1560  
2XL 1300     3XL 1550     S 1330     XL 1590  
2XL 1350     L 1120     S 1340     XXL 1000  
2XL 1400     L 1140     XL 1500     XXL 1100  

                                                                              PSIZE='XL' 인 PRICE 최소값

 

[실습]

SELECT /*+ gather_plan_statistics */ MIN(PRICE)
FROM products
WHERE PSIZE = '2XL';

 

 select * from table(dbms_xplan.display_cursor(null,null,'TYPICAL ALLSTATS LAST'));

 

 

[PLAN]

SQL_ID  5dnppca69jd7j, child number 0
-------------------------------------
SELECT /*+ gather_plan_statistics */ MIN(PRICE)   FROM products   WHERE 
PSIZE = '2XL'
 
Plan hash value: 2350653822
 
------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name         | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers | Reads  |
------------------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |              |      1 |        |       |     2 (100)|          |      1 |00:00:00.01 |       2 |      4 |
|   1 |  SORT AGGREGATE              |              |      1 |      1 |     8 |            |          |      1 |00:00:00.01 |       2 |      4 |
|   2 |   FIRST ROW                  |              |      1 |      1 |     8 |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       2 |      4 |
|*  3 |    INDEX RANGE SCAN (MIN/MAX)| PRODUCTS_IDX |      1 |      1 |     8 |     2   (0)| 00:00:01 |      1 |00:00:00.01 |       2 |      4 |
------------------------------------------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   3 - access("PSIZE"='2XL')

 

 

반응형

'Oracle > 튜닝' 카테고리의 다른 글

클러스터링 팩터(CLUSTERING FACTOR)  (0) 2022.02.16
INDEX 컬럼 가공  (0) 2022.02.11
INDEX RANGE SCAN DESCENDING  (0) 2022.02.10
INDEX RANGE SCAN  (0) 2022.02.10
INDEX UNIQUE SCAN  (0) 2022.02.10