새소식

인기 검색어

개인공부/DB

SQL SELECT 쿼리 실행 순서

  • -

  SQL의 SELECT 쿼리문이 어떤 순서로 실행이 되는지를 알면 올바르고 효율적인 쿼리를 짜는데에 많은 도움이 된다. 따라서 SQL 문법 순서와 실제 실행 순서를 다음과 같이 정리해 본다.

💎 SQL 문법 순서

  • SELECT
  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • ORDER BY

💎 SQL 실제 실행 순서

  • FROM : 각 테이블 확인
  • ON : 조인 조건 확인
  • JOIN : 테이블 조인 (병합)
  • WHERE : 데이터 추출 조건 확인
  • GROUP BY : 특정 칼럼으로 데이터 그룹화
  • HAVING : 그룹화 이후 데이터 추출 조건 확인
  • SELECT : 데이터 추출
  • DISTINCT : 중복 제거
  • ORDER BY : 데이터 정렬

 

1. FROM

SELECT문이라 맨 처음 SELECT문을 실행할거 같지만 첫번째는 FROM문을 통해서 SELECT하고자 하는 전체 테이블을 가지고 온다.

 

2. WHERE

FROM절에서 읽어온 테이블에서 WHERE 조건에 맞는 결과만 갖도록 데이터를 간추린다.

 

3. GROUP BY

선택한 컬럼으로 그룹핑하는 작업을 한다.

 

4. HAVING

GROUP BY 된 이 후 사용되는 조건절이다. WHERE절과 동일하게 조건을 주어 사용할 수 있지만 쿼리 실행 순서 차이에 영향으로 쿼리 성능상에 차이를 가지고 올 수 있다. 

 

예를들어서 다음과 같은 테이블이 존재한다고 가정해보자.

이때  SALARY가 20000 이상인 사람의 이름을 SELECT하려고 한다. 

WHERE절을 사용한다면 쿼리문 실행 순서상 전체 테이블을 가지고 온 후 Steven만 남을 것이고 그 후 그룹핑하는 과정에서도 남은 튜플은 하나이기때문에 금방 SELECT문의 결과가 나올것이다.

 

하지만 WHERE절을 사용하지않고 똑같은 조건을 HAVING절에서 처리하게 된다면 전체테이블을 가지고 온 후 그룹핑하는 과정에서 전체 테이블에 튜플들을 그룹핑 처리후에 HAVING절을 해야하므로 속도에서 느려질수밖에 없다. 이처럼 WHERE절에서 일반 조건을 처리하는 방식이 효율적이며, 적은 데이터에서는 큰 차이가 없을수 있지만 데이터에 양이 늘어날수록 성능에 차이는 커질 수 밖에 없다.

 

5. SELECT

이렇게 조건들을 처리해주고 난 후 담은 데이터에서 어떤 컬럼들을 출력해줄지 SELECT한다.

 

6. ORDER BY

마지막으로 행의 순서를 어떻게 보여줄지 정렬해주는 ORDER BY절이 실행되며 끝난다.

'개인공부 > DB' 카테고리의 다른 글

발표자료  (0) 2022.10.05
ORACLE 내장 함수 정리  (1) 2022.09.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.