[Oracle] 오라클 SQL SELECT 쿼리 실행 순서/처리 과정
Oracle

[Oracle] 오라클 SQL SELECT 쿼리 실행 순서/처리 과정

SELECT 실행 순서
-- 문법 순서

1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
-- 실행 순서

1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY
10. TOP

 

실행 순서 추상화

해당 데이터가 있는 곳을 찾아가서 (FROM)

조건에 맞는 데이터로 필터링하고 (WHERE)

원하는 데이터로 가공 (GROUP BY)

가공한 데이터에서 조건에 맞는 것만 (HAVING)

뽑아내서 (SELECT)

정렬한다 (ORDER BY)

 

실행순서는 문법, 권한 검사 순서이기도 하고, Alias(별칭) 등록 순서이기도 하다.

 

별칭(Alias) 설정 규칙

FROM 절에서 테이블에 Alias를 사용했다면

SELECT, ORDER BY 절에서 사용할 수 있고,

 

SELECT 절에서 컬럼에 Alias를 사용했다면

ORDER BY 절에서 사용할 수 있다.

 

알아두어야 할 몇가지 Fact Check!!!

1. 관계형 데이터베이스가 데이터를 메모리에 올릴 때 행 단위로 모든 컬럼을 가져오게 되므로, SELECT 절에서 일부 컬럼만 선택하더라도 ORDER BY 절에서 메모리에 올라와 있는 다른 컬럼의 데이터(컬럼명)를 사용할 수 있습니다.

 

2. ROWNUM이 할당되는 부분을 주의하자. ORDER BY로 새로 정령하게 되면 순서상 이미 할당된 ROWNUM이 섞이기 때문에 ROWNUM을 생성하는 목적 중 하나인 순차적인 '로우 아이디'를 제공하지 못하게 된다. 즉, 정렬되어 있지 않게 된다.