Oracle SQL 튜닝 및 성능 개선 - 고급 SQL 쿼리 최적화 기법
1. SQL 튜닝이란?
SQL 튜닝은 데이터베이스 성능을 최적화하기 위해 SQL 쿼리를 분석하고 개선하는 과정입니다. 실행 속도를 높이고 리소스 사용을 최소화하는 것이 핵심 목표입니다.
2. 실행 계획(Execution Plan) 분석
2.1 실행 계획이란?
실행 계획은 Oracle이 SQL 문을 실행할 때 선택하는 접근 경로를 보여주는 정보입니다. 실행 계획을 분석하면 성능 병목 지점을 찾을 수 있습니다.
2.2 실행 계획 확인 방법
EXPLAIN PLAN FOR SELECT * FROM employees WHERE department_id = 10; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
3. 인덱스(Index) 최적화
3.1 인덱스 개요
인덱스는 검색 성능을 향상시키는 데이터베이스 객체입니다. 적절한 인덱스를 활용하면 쿼리 성능을 크게 개선할 수 있습니다.
3.2 B-Tree 인덱스
기본적인 인덱스로, 범위 검색 및 등가 검색에 적합합니다.
CREATE INDEX idx_emp_dept ON employees(department_id);
3.3 비트맵 인덱스
중복 값이 많은 열에 효과적이며, 분석 쿼리에 적합합니다.
CREATE BITMAP INDEX idx_emp_gender ON employees(gender);
4. 조인(Join) 최적화
4.1 조인 방식 비교
- Nested Loop Join: 작은 데이터셋에 적합
- Hash Join: 대량의 데이터를 처리할 때 효과적
- Sort Merge Join: 정렬된 데이터셋에서 성능이 좋음
4.2 조인 성능 향상 방법
- 적절한 인덱스 활용
- 조인 순서 변경
- 필요 없는 컬럼 제외
5. 파티셔닝(Partitioning) 활용
5.1 파티셔닝 개요
파티셔닝은 대용량 테이블을 작은 논리적 단위로 나누어 성능을 향상시키는 기법입니다.
5.2 범위(Range) 파티셔닝
CREATE TABLE sales ( sale_id NUMBER, sale_date DATE, amount NUMBER ) PARTITION BY RANGE (sale_date) ( PARTITION sales_2023 VALUES LESS THAN (TO_DATE('2024-01-01', 'YYYY-MM-DD')), PARTITION sales_2024 VALUES LESS THAN (TO_DATE('2025-01-01', 'YYYY-MM-DD')) );
6. 옵티마이저 힌트(Optimizer Hints) 활용
옵티마이저 힌트를 사용하면 실행 계획을 제어하여 SQL 성능을 개선할 수 있습니다.
6.1 인덱스 사용 강제
SELECT /*+ INDEX(employees idx_emp_dept) */ * FROM employees WHERE department_id = 10;
6.2 병렬 처리
SELECT /*+ PARALLEL(employees 4) */ * FROM employees;
7. 참고할만한 사이트
'ORACLE' 카테고리의 다른 글
오라클 데이터베이스 23C 주요 업데이트 (0) | 2025.03.26 |
---|---|
ORA-01722: 수치가 부적합합니다 (0) | 2025.03.26 |
ORACLE 커서(Cursor)와 동적 SQL(Dynamic SQL) 활용법 (0) | 2025.03.25 |
ORACLE Flashback Query와 Flashback Table을 활용한 데이터 복구 (0) | 2025.03.25 |
ORACLE 데이터베이스 백업 및 복구 전략(RMAN, Export/Import) (0) | 2025.03.25 |