일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬 알고리즘
- it 용어
- 파이썬 전처리
- C#
- Oracle VM VirtualBox
- tibero
- 알고리즘
- Python 라이브러리
- sql
- RFP
- 오라클
- Algorithm
- 데이터베이스
- Oracle
- 파이썬 데이터프레임
- VirtualBox
- Python DataFrame
- HTML
- 리눅스
- putty
- 코딩테스트
- csharp
- linux
- 파이썬
- it용어
- MariaDB
- PYTHON
- dbeaver
- python algorithm
- 리눅스 명령어
- Today
- Total
오경석의 개발노트
Oracle_SELECT 문장 실행 순서 본문
각 쿼리는 데이터베이스에서 필요한 데이터를 찾은 다음 해당 데이터를 최대한 빨리 처리하고 이해할 수 있는 데이터로 필터링하는 것으로 시작된다. 쿼리의 각 부분은 순차적으로 실행되므로, 어떤 결과에 어디서 액세스할 수 있는지 알 수 있도록 실행 순서를 이해하는 것이 중요하다.
-- SELECT QUERY
SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
JOIN another_table
ON mytable.column = another_table.column
WHERE constraint_expression
GROUP BY column
HAVING constraint_expression
ORDER BY column ASC/DESC
LIMIT count OFFSET COUNT;
쿼리 실행 순서
1. FROM and JOIN
- 데이터의 전체 작업 집합을 결정하기 위해 FROM 절과 JOIN이 먼저 실행
2. WHERE
- 전체 작업 데이터 집합이 있으면 첫 번째 WHERE 제약 조건이 개별 행에 적용되고 제약 조건을 충족하지 않는 행은 삭제. 각 제약 조건은 FROM절에서 요청된 테이블의 열에만 직접 액세스할 수 있다. SELECT 절 부분의 별칭에는 아직 실행되지 않은 쿼리 부분에 종속된 표현식이 포함될 수 있으므로 대부분의 데이터베이스에서 액세스 불가
3. GROUP BY
- WHERE 절에 제약 조건이 적용된 후 나머지 행은 GROUP BY 절에 지정된 열의 공통 값을 기준으로 그룹화. 그룹화의 결과로 해당 열에 있는 고유 값만큼만 행이 있게 됩니다. 암시적으로 이는 쿼리에 집계 함수가 있는 경우에만 이를 사용해야 함을 의미
4. HAVING
- 쿼리에 GROUP BY 절이 있으면 HAVING 절의 제약 조건이 그룹화된 행에 적용되고 제약 조건을 충족하지 않는 그룹화된 행은 삭제. WHERE 절과 마찬가지로 대부분의 데이터베이스에서는 이 단계에서 별칭에도 액세스 불가
5. SELECT
- SELECT쿼리 부분 의 모든 표현식이 최종적으로 계산
6. DISTINCT
- 나머지 행 중 DISTINCT로 표시된 열에 중복된 값이 있는 행은 삭제
7. ORDER BY
- ORDER BY 절에 순서가 지정되면 행은 지정된 데이터를 기준으로 오름차순 또는 내림차순으로 정렬된다. SELECT 절의 모든 표현식이 계산되었으므로 이 절에서 별칭을 참조할 수 있다.
출처 : https://sqlbolt.com/lesson/select_queries_order_of_execution
'프로그래밍 언어 > Oracle' 카테고리의 다른 글
Oracle_서브 쿼리(Subquery) (0) | 2023.11.24 |
---|---|
Oracle_조인 (1) | 2023.11.15 |
Oracle_ORDER BY 절 (0) | 2023.11.11 |
Oracle_GROUP BY, HAVING 절 (0) | 2023.11.10 |
Oracle_집계함수 (0) | 2023.11.10 |