1. FROM, JOIN
- 먼저 FROM ( 테이블 ) JOIN ( 테이블 ) 이 실행되어 데이터셋을 뽑아냅니다.
- Sub Query문 (서브쿼리)도 실행되며 임시 테이블이 생성될 수 있습니다.
2. WHERE
- 1에서 뽑아낸 데이터셋에서 WHERE 조건문에 기재된 제약조건 대로 이를 충족하는 행만 뽑아냅니다.
3. GROUP BY
- 2에서 뽑아낸 데이터셋에 대해서 그룹조건을 적용하여 그룹으로 묶어줍니다.
4. HAVING
- 그룹으로 묶여진 데이터셋에 대해서 HAVING 조건절을 만족하는 행만이 남습니다.
5. SELECT
- 4까지 완료된 데이터 셋에 대하여 SELECT문을 실행하여 원하는 칼럼을 설정합니다.
6. DINSTINCT
- DISTINCT를 사용할 경우 이 단계에서 중복되는 행은 제거 됩니다.
7. ORDER BY
- 지금까지 만들어진 데이터셋을 어떤식으로 정렬 할 것인지 정합니다(오름차순, 내림차순)
8. LIMIT / OFFSET
- 최종적으로 범위를 지정 (지정된 범위를 벗어나는 행을 제거) 합니다.
[출처]:
https://sqlbolt.com/lesson/select_queries_order_of_execution
jaimemin.tistory.com/1475?category=1060172
데이터베이스 쿼리 실행 순서
회사를 직접적으로 언급할 수는 없지만 데이터베이스 쿼리 실행 순서를 질문받은 적 있습니다. 코딩 테스트 난이도 정도의 쿼리 작성에는 어느 정도 자신이 있었지만 실행 순서는 한 번도 생각
jaimemin.tistory.com
SQLBolt - Learn SQL - SQL Lesson 12: Order of execution of a Query
Now that we have an idea of all the parts of a query, we can now talk about how they all fit together in the context of a complete query. Complete SELECT query SELECT DISTINCT column, AGG_FUNC(column_or_expression), … FROM mytable JOIN another_table ON m
sqlbolt.com
'Web & App > Mysql' 카테고리의 다른 글
Pagenation(페이징) [Offset-based, Cursor-based) (0) | 2020.10.17 |
---|---|
mysql 외부 접속 허용 (0) | 2020.08.17 |