인덱스
•
인덱스는 데이터베이스에서 특정 조건을 만족하는 데이터를 빠르게 찾기 위해 사용하는 자료구조입니다.
•
예를 들어, 100만 개의 데이터 중에서 first name이 '민수'인 사람을 찾는 쿼리가 있을 때, 인덱스가 없다면 모든 데이터를 하나씩 확인해야 합니다. 이를 "풀스캔(Table Scan)"이라고 하며, 이 경우 시간 복잡도는 O(n)입니다.
•
하지만 first name에 인덱스가 걸려 있다면, 비트리(B-tree) 같은 자료구조를 통해 데이터를 훨씬 더 빠르게 찾을 수 있습니다. 이때 시간 복잡도는 O(log n)으로 줄어들어 성능이 크게 향상됩니다.
인덱스의 주요 사용 사례
1.
데이터 조회: 조건을 만족하는 데이터를 빠르게 찾기 위해 인덱스를 사용합니다.
2.
정렬 및 그룹화: 데이터를 빠르게 정렬하거나 그룹화하는 데에도 인덱스가 사용됩니다.
인덱스 생성 방법
CREATE TABLE Players (
id INT PRIMARY KEY,
name VARCHAR(255),
team_id INT,
jersey_number INT
);
SQL
복사
CREATE INDEX idx_name ON Players(name);
SQL
복사
CREATE UNIQUE INDEX idx_team_jersey ON Players(team_id, jersey_number);
SQL
복사
인덱스 조회와 활용
SHOW INDEX FROM Players;
SQL
복사
인덱스 사용의 주의점
•
인덱스는 성능을 향상시키지만, 남발하면 오히려 성능 저하를 초래할 수 있습니다. 인덱스는 추가적인 저장 공간을 차지하며, 데이터 삽입, 업데이트, 삭제 시마다 인덱스를 갱신해야 하기 때문에 오버헤드가 발생합니다. 따라서, 불필요한 인덱스를 만들지 않는 것이 중요합니다.

