곰돌이 놀이터

[Oracle] 쿼리 실행순서 본문

DataBase/Oracle

[Oracle] 쿼리 실행순서

달나라 곰돌이 2020. 7. 8. 10:56

쿼리진행과정

1. 구문 분석(Parsing)

해당 쿼리가 문법적으로 틀리지 않은지 확인. 해당 SQL 개발자 도구가 이해할 수 있는 단위들로 분해하는 과정.

만약 구문이 부정확하다면 여기서 처리를 중단.

 

2. 표준화(Standardization)

실제로 필요없는 부분들이 제거. 표준화된 쿼리 트리(Standard Query Tree)가 만들어 진다.

 

3. 최적화(Optimization)

통계나 조각 정보 등을 바탕으로 실행 계획을 만들어 낸다. 쿼리처리에서 매우 중요한 단계

 

- 쿼리 분석 : 검색 제한자(SARG)인지 조인 조건인지 판단.

- 인덱스 선택 : 분포 통계 정보를 이용하여 인덱스검색이나 테이블 스캔 중의 하나를 선택.  여러 인덱스 중 가장 효율적인 인덱스를 선택

- 조인 처리 : JOIN, UNION, GROUP BY, ORDER BY 절을 가지고 있는지 확인하여 적절한 작업 순서를 선택

 

이 단계의 출력은 실행 계획(Execution Plan) 이다.

4. 컴파일(Compilation)

컴파일을 하면 이진 코드가 생성된다.

5. 실행(Execute)

실제 처리를 하고 결과를 돌려준다.

 

쿼리 작성/실행 순서

작성순서
  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
설명
  1. FROM 해당 데이터가 있는 곳을 찾아가서
  2. WHERE 조건에 맞는 데이터로 필터링하고
  3. GROUP BY 원하는 데이터로 가공
  4. HAVING 가공한 데이터에서 조건에 맞는 것만
  5. SELECT 뽑아내서
  6. ORDER BY 정렬한다​
Comments