IT/DataBase

[SQL] Oracle SELECT query 실행 순서

알 수 없는 사용자 2022. 11. 28.

[SQL] Oracle SELECT query 실행 순서
image source:https://unsplash.com/s/photos/sql

SQL SELECT 쿼리 실행 순서😀

SELECT 쿼리에서 실행 순서는 아래와 같다.

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀

부끄럽지만 처음엔 저런 순서가 있는 지 몰랐고 최근에 알았다.

아무것도 모르는 초보 시절엔 그냥 썼다고 치면 시간이 흐르면서는 점점 이해하면서 쓰려고 한다.

저 순서를 반드시 기억하고 쿼리를 작성해야 하며 이에 따른 퍼포먼스의 차이가 크다.

 

예시 SELECT SQL😄

SELECT
    JOB_ID
    ,AVG(SALARY) SAL_AVG
FROM
    EMPLOYEES2 e 
WHERE 
    SALARY > 13000
GROUP BY 
    JOB_ID
HAVING
    COUNT(*) > 1
ORDER BY SAL_AVG DESC
;

위 간단한 쿼리문에서도 내부적으로는 6단계를 거친다.

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - 예시 SELECT SQL😄

 

저 실행 순서를 하나씩 뜯어 보겠다.😎

FROM절

쿼리의 첫번 째 실행순서인 FROM절에서 아래처럼 EMPLOYEES2 테이블의 전체 데이터를 가지고 온다.

-- EMPLOYEES2테이블의 전체 데이터 조회
FROM EMPLOYEES2

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - FROM절
FROM절

 

WHERE절

WHERE절에서는 전체 데이터에서 아래처럼 조건에 맞는 결과를 필터링한다.

-- 급여가 13000 이상인 데이터 필터링
WHERE SALARY > 13000

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - WHERE절
WHERE절

 

GROUP BY절

GROUP BY절에서는 WHERE절로 필터링된 데이터를 그룹핑하는 작업을 한다.

(GROUP BY한 컬럼으로 중복제거 후 그룹화함)

GROUP BY절 사용 시 그룹함수를 사용할 수 있음(count(), sum(), avg() 등)

-- JOB_ID를 기준으로 그룹핑
GROUP BY JOB_ID

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - GROUP BY절
GROUP BY절

 

HAVING절

HAVING절은 GROUP BY한 데이터에 조건을 줄 때 사용됨

HAVING절에서는 집계함수를 조건으로 사용가능

WHERE절과는 다른용도로 사용됨(WHERE절은 FROM절 다음에 나온 데이터 필터링, 즉 GROUP BY 전에 필터링)

-- GROUP BY한 데이터가 1개 이상인 것만 조회
HAVING COUNT(*) > 1

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - HAVING절
HAVING절

 

SELECT절

여러 조건들 필터링한 최종 데이터에서 출력할 데이터를 선택하는 절이 SELECT절이다.

-- 조건 처리 후 출력할 데이터 선택
SELECT JOB_ID, AVG(SALARY) SAL_AVG

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - SELECT절
SELECT절

 

ORDER BY 절🤩

마지막 어떤 데이터를 출력할지 정한 뒤 선택사항으로 row의 순서를 정렬해주는 절이 ORDER BY 절이다.

-- 평균값을 SAL_AVG로 별칭을 주고 그로 내림차순 정렬
ORDER BY SAL_AVG DESC

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - ORDER BY 절🤩
ORDER BY절

 

참조 : 마이자봉 블로그, 2020.03.17, https://myjamong.tistory.com/172

 

[Oracle] SQL SELECT 쿼리 실행 순서 처리 과정 :: 마이자몽

SELECT 쿼리 실행 순서 SQL 쿼리문을 작성할때 사용되는 WHERE, GROUP BY, ORDER BY 절과 같은 구문을 실행하는데 순서가 존재합니다. 이 순서에 의해서 쿼리가 처리되고 어떻게 쿼리문을 작성하느냐에 따...

myjamong.tistory.com

[SQL] Oracle SELECT query 실행 순서 - SQL SELECT 쿼리 실행 순서😀 - ORDER BY 절🤩