SQL & 데이터베이스/SQL 성능 최적화 & 튜닝
[SQL] 인덱스(INDEX) 활용하여 SQL 성능 최적화하기
Jinsapp
2025. 3. 11. 14:58
📌 [SQL] 인덱스(INDEX) 활용하여 SQL 성능 최적화하기
📌 인덱스(INDEX)란?
인덱스(INDEX)는 데이터베이스에서 특정 컬럼의 검색 속도를 향상시키기 위한 자료구조입니다.
책의 목차처럼 테이블에서 원하는 데이터를 더 빠르게 찾을 수 있도록 도와주는 역할을 합니다.
📌 인덱스가 SQL 성능을 개선하는 이유
- ✅ **검색 속도 향상** – 인덱스가 없는 경우, 모든 데이터를 하나씩 검사(Full Table Scan)하지만, 인덱스를 사용하면 특정 데이터만 빠르게 검색 가능
- ✅ **조인(Join) 성능 향상** – 인덱스를 활용하면 조인 연산 시 불필요한 연산을 줄여 속도를 높일 수 있음
- ✅ **정렬 성능 개선** – ORDER BY 사용 시, 인덱스가 있으면 정렬 연산이 빨라짐
- ✅ **그룹화 연산 속도 증가** – GROUP BY, DISTINCT 등의 연산에서 불필요한 정렬을 줄일 수 있음
📌 인덱스 적용 예제
1️⃣ 기본 인덱스 생성 및 활용
설명: 인덱스를 사용하여 검색 성능을 향상시킬 수 있습니다.
기본 테이블 예제:
CREATE TABLE employees (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
department VARCHAR2(50),
salary NUMBER
);
인덱스 없이 실행되는 쿼리 (Full Table Scan 발생 가능):
SELECT * FROM employees WHERE name = 'John Doe';
해결 방법: 인덱스 생성
CREATE INDEX idx_employees_name ON employees(name);
인덱스 적용 후 실행 계획 확인:
EXPLAIN PLAN FOR
SELECT * FROM employees WHERE name = 'John Doe';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
2️⃣ 복합(Composite) 인덱스 활용
설명: 여러 개의 컬럼을 포함하는 인덱스를 생성하면, 다중 조건 검색 시 성능이 향상됩니다.
복합 인덱스 생성:
CREATE INDEX idx_employees_name_department
ON employees(name, department);
복합 인덱스가 적용되는 쿼리:
SELECT * FROM employees WHERE name = 'John Doe' AND department = 'IT';
주의사항: 복합 인덱스는 왼쪽(leading) 컬럼이 먼저 검색 조건에 포함될 때 최적화 효과를 가짐.
3️⃣ 유니크(UNIQUE) 인덱스 활용
설명: 유니크 인덱스는 **중복을 허용하지 않는 인덱스**로, 테이블의 무결성을 유지하는 데 사용됩니다.
유니크 인덱스 생성:
CREATE