일반적인 쿼리 실행 순서
쿼리 실행 순서는 일반적으로 다음과 같습니다.
- FROM: 쿼리의 대상이 되는 테이블을 선택합니다.
- WHERE: 특정 조건을 만족하는 행만 선택합니다.
- GROUP BY: 특정 열을 기준으로 그룹을 만듭니다.
- HAVING: 그룹에 대한 조건을 지정합니다.
- SELECT: 조회할 열을 선택합니다.
- DISTINCT: 중복된 결과를 제거합니다.
- ORDER BY: 결과를 정렬합니다.
- LIMIT/OFFSET: 결과를 제한하거나 오프셋을 지정합니다.
하지만 이러한 실행 순서는 모든 데이터베이스 시스템에서 동일하지는 않습니다. 일부 시스템에서는 WHERE 절의 조건을 먼저 처리하고, GROUP BY 절 이전에 SELECT 절을 실행하는 등 다른 실행 순서를 따릅니다. 따라서 사용하는 데이터베이스 시스템에 따라 실행 순서가 달라질 수 있습니다.
데이터베이스 시스템 별 쿼리 실행 순서
각 데이터베이스 시스템에서의 쿼리 실행 순서는 다음과 같습니다.
MySQL/MariaDB
- FROM
- JOIN
- WHERE
- GROUP BY
- WITH ROLLUP
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT/OFFSET
Oracle
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- FETCH FIRST/NEXT
Microsoft SQL Server
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- OFFSET/FETCH
PostgreSQL
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT/OFFSET
SQLite
- FROM
- JOIN
- WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT/OFFSET
위의 순서는 일반적인 경우이며, 각 데이터베이스 시스템의 버전과 설정에 따라 다를 수 있습니다. 또한, 각 데이터베이스 시스템에서는 쿼리 실행 순서를 최적화하기 위해 다양한 기술을 사용합니다.
반응형
'Database' 카테고리의 다른 글
[SQL] HAVING (0) | 2023.04.06 |
---|---|
[SQL] GROUP BY (0) | 2023.04.06 |
[SQL] 그룹함수(집계함수) (0) | 2023.04.06 |
[SQL] ORDER BY 정렬 (0) | 2023.04.06 |
[SQL] OUTER JOIN (RIGHT, LEFT, FULL) (0) | 2023.04.06 |
댓글