최근에는 회사에서 쿼리를 통해 구매재고, 판매재고, 보유재고, 판매불가재고, 이익율 등 통계쪽을 맡아서 진행하고 있다. 그러다보니 join을 많이 걸고 쿼리를 길게 쓰게 되었는데 실행속도가 너무 길어 오늘은 쿼리 실행순서를 공부해본다.

FROM(JOIN 포함) > ON(JOIN 조건) > WHERE > GROUP BY > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT/OFFSET
FROM절에 있는 테이블이나 뷰를 체크하고 JOIN까지 처리된다.
ON table1.id = table2.id와 같은 조건이 처리되고, AND 같이 JOIN에 붙이는 조건도 포함된다.
필요한 데이터를 필터링 하고 맞지 않는 조건의 row는 제외된다.
데이터를 특정 컬럼의 값을 기준으로 묶는다.
GROUP화 된 데이터에 조건을 지정할 수 있고, 필터링을 할 수 있다.
SELECT c.customer_id , b.TITEL from customer c
inner join board b on c.idx = b.customerIdx
where b.createDate BETWEEN '2024-01-01' AND '2024-01-31'
group by c.customer_id
HAVING c.age > 20
order by b.createDate desc
limit 10 ;
예를 들어 위 컬럼의 실행순서를 살펴본다.
실행순서를 이정도만 알아도 쿼리 속도를 빠르게 하는 것에 도움이 될것이다. 끝!