본문 바로가기
Database/MYSQL

MAX 함수 튜닝

by 반화넬 2007. 6. 4.
반응형
MAX 함수 튜닝

 

다음 쿼리를 튜닝해 보자

SELECT MAX(SEQ)

  FROM ORDER_DETAIL

WHERE ORDER_NO = '00001'
 
 

ORDER_DETAIL의 INDEX정보

INDEX ORDER_DETAIL_PK(ORDER_NO, SEQ)

 

실행계획

0          SELECT STATEMENT Optimizer=ALL_ORWS

1    0          SORT (AGGREGATE)

2    1              INDEX(RANGE SCAN) OF 'ORDER_DETAIL_PK' (UNIQUE)
 
 

MAX를 얻기위해 INDEX를 RANGE ACCESS한후 SORT 후 가장 큰값을 도출하는 구조

 

INDEX는 생성시부터 SORT되어 있음으로 반대로 읽으면 한건만 읽게된다!

수정된 쿼리문

SELECT /*+ INDEX_DESC(ORDER ORDER_DETAIL_PK) */ SEQ

  FROM ORDER

WHERE ORDER_NO = '00001'

    AND ROWNUM = 1
 
 

실행계획

0          SELECT STATEMENT Optimizer=ALL_ORWS

1    0          COUNT(STOPKEY)

2    1              INDEX(RANGE SCAN DESCENDING) OF 'ORDER_DETAIL_PK' (UNIQUE)
 
 

MIN함수도 마찬가지입니다
반응형