[MySQL] SELECT문 작성 순서와 실행 순서 알아보기
SQL 쿼리문을 작성할 때 사용되는 WHERE, GROUP BY, ORDER BY 와 같은 구문을 실행하는데는 순서가 필요하다.
순서에 의해 쿼리가 처리되고 어떻게 쿼리를 작성하느냐에 따라 성능 차이가 발생할 수 있고 쿼리 실행시 최종적으로
는 결과만 확인할 수 있기 때문에 좀 더 정확한 쿼리 작성을 위해 실행 작동 순서를 알아야한다.
문법 작성 순서
SELECT | FROM | ( JOIN ON ) | WHERE | GROUP BY | ( HAVING ) | ORDER BY | ( LIMIT ) |
1. SELECT columnName
2. FROM tableName
3. JOIN ON
4. WHERE
5. GROUP BY
6. HAVING
7. ORDER BY
8. LIMIT
실행 작동 순서
FROM | ( ON JOIN ) | WHERE | GROUP BY | ( HAVING ) | SELECT | ORDER BY | ( LIMIT ) |
1. FROM - 조회 테이블 확인
문법 작성 순서대로 SELECT 부터 처리할 것이라고 예상할 수 있지만 첫 번째 실행 순서는 FROM절이다.
FROM 절에서는 테이블의 모든 데이터를 가져온다.
2. ON JOIN - 다른 테이블과의 결합
다른 테이블과의 결합 조건 ON확인 후 테이블을 결합(JOIN) 한다.
3. WHERE - 데이터 추출 조건 확인
FROM절에서 읽어온 데이터 중 조건에 일치하는 데이터만 가져온다.
4. GROUP BY - 컬럼 그룹화
WHERE 조건에서 읽어온 데이터를 선택한 컬럼으로 그룹화해 단일 값으로 축소한다.
5. HAVING - 그룹화 조건 확인
항상 GROUP BY 뒤에 위치하며 WHERE 조건절과 마찬가지로 조건을 줄 수 있다. WHERE과의 차이점은
WHERE 절은 기본적인 조건절로 우선적으로 모든 필드를 조건에 둘 수 있지만 HAVING 절은 GROUP BY 이후
특정한 필드로 그룹화된 새로운 테이블에 조건을 줄 수 있다.
6. SELECT - 데이터 추출
여러 조건들을 처리한 후 남은 데이터에서 어떤 열을 출력할지 선택한다.
7. ORDER BY - 데이터 순서 정렬
마지막으로 행의 순서를 정렬한다.
8. LIMIT - 정렬까지 완료한 데이터 중 어디까지 결과로 출력할지 선택
LIMIT1 = 첫 번째 데이터만 출력한다.
참고 블로그 : https://nohriter.tistory.com/129