[ORACLE SQL] 쿼리 실행 순서

Namgon·2021년 4월 8일
0

ORACLE

목록 보기
2/2

쿼리 실행순서

쿼리가 실행되는 순서는 다음과 같다.

  1. from [어느 테이블에서?]
  2. where [조건]
  3. order by 혹은 group by etc..
  4. select [조회시 필요한 값]

사원 별로 급여를 많이 받는 사람 5명을 조회하라는 쿼리가 있다면, 음 ~ 사원 테이블에서 급여 많이 받는 순으로 정렬하고 rownum으로 5명 컷 하면 되겠지 하면서 다음과 같은 쿼리를 짜게 된다.

select    empnm  -- 사원명
         ,sal    -- 급여
from      emp    -- 사원 테이블
where     rownum <= 5
order by  sal desc

이게 맞냐? ㅎ 글쓴이 역시 그랬지만 위에 순서를 보면 틀렸다는 걸 알 수 있다. 이렇게 쿼리를 짜버리면 급여 별로 내림차순 정렬을 하기전 테이블에 저장된 순서로 5명을 먼저 커트해버린다...

그렇다. 잘 못 짠 쿼리다. 그래서 항상 쿼리가 실행되는 순서를 기억하고 있어야 한다. 물론 다른 사람들은 잘 할 것이기 때문에 이 글을 읽지 않아도 되겠지만, 나같은 쿼알못은 이렇게라도 해놔야 기억할 것 같아 작성한다.

select    v.empnm
         ,v.sal
from      ( select   empnm
                    ,sal
            from     emp
            order by sal desc
          ) v
where     rownum <= 5

1) from절에 있는 서브 쿼리를 통해 사원 별 급여 리스트가 내림차순으로 정렬된 테이블 v에서
2) where절 조건을 통해 5명 이하만을
3) 사원명과 급여를 조회한다!

SQL 공부를 더 열심히 해야겠다.... :)

profile
make more services :)

0개의 댓글