SQL 튜닝의 시작 (2013년)
ROWNUM = 1은 ROWNUM <= 1로 사용하자 0 0 57,918

by 구루비스터디 ROWNUM [2018.07.14]


ROWNUM = 1 은 ROWNUM <= 1 로 사용하자

문제
  • Bind 변수를 사용하지 하지 않아, Literal SQL 이 과다하게 수행


해결
  • Literal SQL 제거 => Bind 변수로 변경 or CURSOR_SHARING (파라미터)의 설정 값 변경


  • CURSOR_SHARING (파라미터)의 설정 값 변경시 ROWNUM = 1 과 ROWNUM <= 1 의 작성형태에 따라 성능 편차가 발생할 수 있다.
  • CURSOR_SHARING = FORCE or SIMILAR 로 적용하였을 경우 동작차이


(1) ROWNUM = 1 ---> ROWNUM = :"SYS_B_0"
  • 옵티마이저가 바인드 변수가 어떤 값으로 입력되는지 알 수가 없어 전체 데이터 검색 후 1건 추출하게 됨.
  • OPERATION은 COUNT로 보임.


(2) ROWNUM <= 1 ---> ROWNUM <= :"SYS_B_0"
  • COUNT STOPKEY 가 동작해서 1건만 추출 후 수행 종료됨.
"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3826

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입