[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL)
1. Query Plan이란? SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 접근에 사용되는 순서가 있는 단계별 집합 엑세스 플랜의 관계형 모델 개념의 특화된 경우 SQL이 선언형이기 때문에 주어진
spidyweb.tistory.com
1. 아래와 같이 주석 기호에 '+'를 붙인다.
SELECT /*+ INDEX(테이블 인덱스명) */
2. 힌트 안에 인자를 나열할 땐 콤마를 사용하지만, 힌트와 힌트 사이에는 사용하지 않는다
/*+ INDEX(테이블 PK명) INDEX(테이블, PK명) */ 모두 유효
/*+ INDEX(테이블), FULL(테이블) */ 첫번째 힌트만 유효함
3. 테이블을 지정할 때 스키마명을 명시하면 안된다
4. FROM절에서 테이블의 별칭을 지정했다면 힌트에도 반드시 테이블의 별칭을 사용한다.
분류 | 힌트 | 설명 |
최적화 목표 | ALL_ROWS | 전체 처리속도 최적화 |
FIRST_ROWS(N) | 최초 N건 응답속도 최적화 | |
액세스 방식 | FULL | Table Full Scan으로 유도 |
INDEX | Index Scan으로 유도 | |
INDEX_DESC | Index를 역순으로 스캔하도록 유도 | |
INDEX_FFS | Index Fast Full Scan으로 유도 | |
INDEX_SS | Index Skip Scan으로 유도 | |
조인 순서 | ORDERED | FROM절에 나열된 순서대로 조인 |
LEADING | LEADING 힌트 괄호에 기술한 순서대로 조인 | |
SWAP_JOIN_INPUTS | 해시조인시, BUILD_INPUT을 명시적으로 선택 | |
조인 방식 | USE_NL | NL 조인으로 유도 |
USE_MERGE | 소프트 머지 조인으로 유도 | |
USE_HASH | 해시 조인으로 유도 | |
NL_SJ | NL 세미조인으로 유도 | |
MERGE_SJ | 소트 머지 세미조인으로 유도 | |
HASH_SJ | 해시 세미조인으로 유도 | |
서브쿼리 팩토링 | MATERIALIZE | WITH문으로 정의한 집합을 물리적으로 생성하도록 유도 |
INLINE | WITH문으로 정의한 집합을 물리적으로 생성하지 않고 INLINE 처리하도록 유도 | |
쿼리 변환 | MERGE | 뷰 머징 유도 |
NO_MERGE | 뷰 머징 방지 | |
UNNEST | 서브쿼리 Unnesting 유도 | |
NO_UNNEST | 서브쿼리 Unnesting 방지 | |
PUSH_PRED | 조인조건 Pushdown 유도 | |
NO_PUSH_PRED | 조인조건 Pushdown 방지 | |
USE_CONCAT | OR 또는 IN-List 조건을 OR-Expansion으로 유도 | |
NO_EXPAND | OR 또는 IN-List 조건을 OR_Expansion 방지 | |
병렬처리 | PARALLEL | 테이블 스캔 또는 DML을 병렬방식으로 처리하도록 유도 |
PARELLEL_INDEX | 인덱스 스캔을 병렬방식으로 처리하도록 유도 | |
PQ_DISTRIBUTE | 병렬 수행시 데이터 분배방식 결정 | |
기타 | APPEND | Direct-Path Insert로 유도 |
DRIVING_SITE | DB Link Remote 쿼리에 대한 최적화 및 실행 주체 지정 | |
PUSH_SUBQ | 서브쿼리를 가급적 빨리 필터링하도록 유도 | |
NO_PUSH_SUBQ | 서브쿼리를 가급적 늦게 필터링하도록 유도 |
참고자료
https://spidyweb.tistory.com/460
[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL)
1. Query Plan이란? SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 접근에 사용되는 순서가 있는 단계별 집합 엑세스 플랜의 관계형 모델 개념의 특화된 경우 SQL이 선언형이기 때문에 주어진
spidyweb.tistory.com
SQL 개념, 종류 | 트랜잭션 특성 | SQL문 실행 순서 (0) | 2023.05.10 |
---|---|
데이터베이스의 종류 | 관계형 데이터베이스의 연산 | 테이블의 구조 (1) | 2023.05.10 |
분산 데이터베이스 (0) | 2023.04.26 |
정규화, 반정규화 (0) | 2023.04.26 |
엔티티, 속성, 관계, 식별자 (0) | 2023.04.12 |