SQL

sql 의 쿼리 실행 순서

monawa 2023. 2. 21.
728x90

서브쿼리에 대한 문제를 풀다가 왜 서브쿼리를 써야하지 이해가 안됬는데

 

실행 순서떄문에  그런것이였다 ㅇㅁㅇ 

그런 기념으로 날잡고 한번 실행순서 정리해봅니다

1.FROM 절 (+ Join)

가장 먼저 진행되는건 FROM절이다  

테이블 전체를 가져오는 역활을 하며 

INDEX를 사용하지 않는다는 가정에서 WHERE절이나 SELECT절에서 일부 행이나 열을 제거하여 출력한다고 해도 가장 처음에 테이블의 모든 데이터를 가져온다.

 

테이블을 합쳐주는 JOIN또한 동순위로 진행된다

 

 

2. WHERE절 

FROM에서 가져온 테이블을 WHERE절을 통해 원하는 조건에 맞는 값만 필터링해주는 역활을 한다

 

 

3. GROUP BY

컬럼을 그룹핑해준다

이 글을 쓰게 만든  이유인데 GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져옵니다. 고로 SELECT에 MAX를 해도 최대값을 가져오는것이 아닌 그룹화된 테이블 가장 상단을 가져오게 된다 

 

4. HAVING 절

HAVING 은 GROUP BY를 통해 그룹핑 후에 그 그룹에 사용하는 조건절로서 

WHERE 과 HAVING에 둘다 적용할수 있는 조건이라면 WHERE절에 사용하는게 바람직합니다  -  (이는 HAVING절은 각 그룹에 조건을 거는 방식이기 떄문에 리소스를 더 먹게 됩니다)

 

하지만 AVG 같이 집계함수를 사용하는 경우에는 각 그룹에 평균을 구하는 것이기 떄문에 HAVING절을 사용해야 합니다 

 

5. SELECT절 

위에 조건들을 적용하고 난후 어떤 컬럼을 출력할지 선택합니다

 

6. ORDER BY절

출력할 컬럼의 순서를 어떠한 방식으로 정렬할지 정해줍니다

 

7.LIMIT

최종 결과물을 몇개까지 보여줄지 선택합니다 

 

 

Reference

https://jaehoney.tistory.com/191

728x90

'SQL' 카테고리의 다른 글

sqld 1장 데이터 모델링의 이해  (0) 2023.05.31
sqld rollup,cube ~윈도우함수 (108~127)  (1) 2023.05.30
WHERE,HAVING 의 차이  (0) 2023.02.14
[MY SQL] JOIN과 UNION  (0) 2023.02.07
DDL, DML, DCL,TCL  (0) 2023.02.05

댓글