본문 바로가기
DBMS

SQL Query Execution order

by Ahngyuho 2024. 11. 29.

 

SQL 쿼리에서 각 절이 실행되는 순서를 자주 까먹어서 오늘은 순서를 정리해보고 실제 작성된 쿼리를 대상으로 실행 순서를 작성해 보려고 합니다.

 

SQL 쿼리는 다음과 같은 순서로 각 절이 실행됩니다.

 

https://blog.bytebytego.com/p/ep50-visualizing-a-sql-query

 

(FROM -> JOIN -> ON) -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT

 

 

https://blog.bytebytego.com/p/ep50-visualizing-a-sql-query

 

EP50: Visualizing a SQL Query

This week’s system design refresher: Cloud-native vs. Cloud computing (Youtube video) Visualizing a SQL query Evolution of programming languages Linux Storage Stack Diagram The most useful engineering conversation you’ll hear each week (Sponsored) Dev

blog.bytebytego.com

제가 참고한 사이트 입니다. 그림이 매우 잘 그려져 있어서 많은 도움이 됐습니다.

 

 

이 문제를 대상으로 쿼리가 어떤 순서로 실행되는지 알아봅시다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/131534

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

-- 코드를 입력하세요
SELECT YEAR(SALES_DATE) AS YEAR,
MONTH(SALES_DATE) AS MONTH,
COUNT(distinct USER_INFO.USER_ID) AS PURCHASED_USERS, 
ROUND(
        COUNT(distinct USER_INFO.USER_ID) / (
            SELECT COUNT(*) 
            FROM USER_INFO 
            WHERE USER_INFO.JOINED LIKE '2021-%'
        ), 
        1
    ) AS PURCHASED_RATIO
FROM USER_INFO
INNER JOIN ONLINE_SALE 
ON USER_INFO.USER_ID = ONLINE_SALE.USER_ID
WHERE USER_INFO.JOINED LIKE '2021-%'
GROUP BY DATE_FORMAT(SALES_DATE,'%Y-%m')
ORDER BY YEAR, MONTH
;

 

1. FROM and Join

먼저 FROM 과 Join으로 작업해야 할 전체 테이블을 여기서 만들어 줍니다.

FROM 에서 선택한 테이블 USER_INFO 와  JOIN 으로 선택한 테이블 ONLINE_SALE 을 INNER JOIN 한 테이블을 만들어 줍니다.

 

2. WHERE 

FROM 절 이후에 내려온 테이블에 조건을 적용해서 필요한 행만 뽑아내는 구간입니다.

USER_INFO.JOINED LIKE '2021-%'

2021- 이라는 문자를 앞부분에 가지고 있는 행들만 뽑아줍니다.

 

3. GROUP BY

GROUP BY 컬럼 이 주어지면 컬럼을 기준으로 데이터를 그룹화 해줍니다.

GROUP BY DATE_FORMAT(SALES_DATE,'%Y-%m')

년 월 별로 그룹화된 테이블이 만들어 집니다.

2022-01 2022-02 ... 이런 식으로 각 값에 해당되는 행들이 그룹화 됩니다.

 

4. ORDER BY

ORDER BY  로 테이블을 오름차순 해줍니다.

 

 

SQL 쿼리에서 **각 절(Clause)**이 실행되는 순서에 대한 이해는 쿼리 최적화나 성능 분석에서 중요합니다! 

 

 

 

 

 

'DBMS' 카테고리의 다른 글

[RDB] MariaDB Master-Slave Replication  (0) 2025.03.10
Jpa Audit  (2) 2024.10.21