[SQL]작성순서 vs 실행순서

Oni·2023년 7월 15일
0

SQL

목록 보기
5/15

🔎SQL 쿼리 작성 순서

SELECT > FROM > JOIN ON > WHERE > GROUP BY > HAVING > ORDER BY > LIMIT


🔎SQL 쿼리 실행 순서

FROM > JOIN ON > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > OVER > LIMIT

실행 순서는 크게 3개로 분할해서 생각해볼 수 있다.

STEP 1. 테이블 인식 : FROM
STEP 2. 테이블 구조 : JOIN ON-WHERE-GROUP BY- HAVING (⭐중요)
STEP 3. 테이블 조회 : SELECT-DISTINCT-ORDER BY-LIMIT


🔎POINT

테이블 구조 관련 절의 경우 연산량과 성능 관련하여 생각할 포인트가 많다.
⭐연산 후 추출하기 VS 추출하기 전 필요한 것만 연산 을 비교하여 생각하는 관점이 중요하다.

간단한 예를 들어 생각해보자
TABLE_A 에서 WHERE '날짜' = '2023-01-01'인 행을 대상으로 TABLE_B와 ID를 기준으로 JOIN할 때

SELECT ID, 날짜
FROM TABLE_A A
JOIN TAVLE_B B ON A.ID=B.ID
WHERE '날짜' = '2023-01-01'

만약 TABLE_A에 포함된 날짜범위가 2010~2023년이라고 가정했을 때 해당 쿼리는 작동은 하겠지만 필요한 컬럼 대비 연산량이 과도하게 많아진다는 문제가 있다.
(전체 테이블A에 대해 연산한뒤(JOIN) 조건에 맞는 것만 추출하는 WHERE절이 동작하기 때문)

따라서 경우에 따라 JOIN하기 전에 CTE처리를 하는 등 따로 테이블을 분리해서 처리하는 것을 고려할 필요가 있다.

profile
데이터 분석/엔지니어링/ML에 관한 기록

0개의 댓글