MySql
select 쿼리 수행 순서
제뉴어리맨
2021. 2. 14. 15:29
보통 프로그래머들이 사용하는 쿼리의 구문은 다음과 같다.
select
from
where
group by
having
order by
그리고 의외로 이 쿼리가 수행 될때 어떤 순서로 실행이 되는지 모르는 사람들이 많다.
결과부터 말하자면 수행 순서는 다음과 같다.
from -> where -> group by -> having -> select -> order by
각 순서에서 수행가는 기능은 다음과 같다.
- from
실존 테이블인지, select update insert 권한이 있는지 확인
- where
어떤 조건인지 체크
- group by
가져 온 로우들을 어떤 방식으로 group by 할건지 체크
- having
group by 한것들 중에 버려야할 데이터가 있는지 체크
- select
가져 온 로우중에 어떤 컬럼을 출력해야할지
이 순서이기 때문에 *이나 특정 컬럼만 가져오나 io 비용이 같다
그렇지만 select절에 있는 컬럼들이 모두 인덱스에 담겨있을때는
얘기가 달라지지만 인덱스를 제외하고 생각하면 같음
- order by
가져온 로우들을 정렬
출처 : 유투브 SQL전문가 정미나