본문 바로가기

Programming/Oracle

rownum 처리 및 explain plan 기능(toad)


안녕하세요 ㅎㅎㅎ

rownum에 대해서 마저 쓰려고 들어왔습니다.

이건 페이징을 처리해야 하는 상황에서 order by와 같이 속도 향상으로 위해 사용하는 편법(?)같은 겁니다 ㅎㅎ

select rn from (
   select rownum rn from data where rownum < #pageno#*10
)
where rn >(#pageno#-1)*10

간단히 설명을 하자면 데이터베이스 테이블에 있는 데이터를 FULL SCAN을 함으로써 발생하는 부하를 줄이겠다는 겁니다.

stopkey라는게 있는데 조건에 해당하는 결과값을 찾았을 때는 끝까지 검색을 하지 않고 그 순간에 멈추는 방식을 말합니다.

토드에서 explain plan for 기능을 사용해서 확인해 볼 수 있는데요...

옵티마이저가 해당 쿼리에 대해서 어떤 실행계획을 가지고 있는지를 살펴볼 수 있지요 ㅎㅎ
(제가 튜닝하면서 쓰게 된 거지요 ㅎㅎ 실제 다른 분들은 모르시는 경우가 많습니다...도움이 될까해서....)

ctrl+e 를 클릭해서 확인해 보실 수 있습니다. (물론 블록지정해야함...)

 

(꼭 위의 쿼리에서 stopkey를 확인할 수 있는건 아닙니다 ㅎㅎ)

부연 설명...

# 설정
1. View ->Toad Options -> Oracle -> General
   중간쯤에 Explain Plan에서 Table란에  TOAD_PLAN_TABLE 입력
2. 화면 하단의 Data Grid 탭에서 오른쪽 마우스 클릭 후 Explain Plan 선택
3. 해당 쿼리문을 블록지정 후 Ctr+E (또는 화면 상단 메뉴 중 엠블란스 아이콘 클릭)
참고로 Toad 9.0.1버전에서 테스트 함


역시 글쓰다가 딴데로 빠졌군..-_-.....