SQL 튜닝의 시작 (2013년)
ORDER BY와 ROWNUM을 같은 위치에 두지 말자 0 0 97,325

by 구루비스터디 ROWNUM [2018.07.14]


ORDER BY와 ROWNUM을 같은 위치에 두지 말자

  • 의도하지 않은 데이터가 나올 수 있음


SQL 실행 순서
  1. FROM, WHERE 절을 처리
  2. ROWNUM 의 순번이 할당되고, 추출 로우에 ROWNUM 을 증가
  3. SELECT COLUMN LIST 절을 적용
  4. GROUP BY 절을 적용
  5. HAVING 절을 적용
  6. ORDER BY 절을 적용




-- 테이블 생성
drop table t1;

create table t1 as
select level c1
from   dual
connect by level <= 10
;


-- 정렬 후 5개의 데이터만 조회
select *
from  (select c1
            , rownum as rnum
       from   t1
       order by c1 desc
       )
where  rownum <= 5
;

        C1       RNUM
---------- ----------
        10         10
         9          9
         8          8
         7          7
         6          6

-- 5개의 데이터를 가져온 후 정렬

select c1
     , rownum as rnum
from   t1
where  rownum <= 5
order by c1 desc
;

        C1       RNUM
---------- ----------
         5          5
         4          4
         3          3
         2          2
         1          1



  • rownum 의 위치에 따라 결과값이 달라질 수 있으므로 의도한 결과가 나오게 잘 사용해야 됨.
"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

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

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

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

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