MySQL에서 복합 인덱스 사용법

복합 인덱스(Composite Index)는 여러 개의 컬럼을 결합하여 하나의 인덱스를 만드는 방법입니다.

이 인덱스는 복잡한 쿼리에서 성능을 크게 향상시킬 수 있으며, 특히 여러 컬럼을 동시에 검색할 때 유용합니다. 

 

 

1. 복합 인덱스란?

복합 인덱스는 두 개 이상의 컬럼에 대해 하나의 인덱스를 생성하는 방식입니다. 여러 컬럼을 함께 사용하여 검색을 최적화하려는 경우 복합 인덱스를 사용하면 효율적인 쿼리 성능을 얻을 수 있습니다.

예를 들어, 사용자 정보 테이블에서 `first_name`과 `last_name`을 자주 동시에 조회한다면, 두 컬럼을 결합한 복합 인덱스를 생성하는 것이 성능에 도움이 될 수 있습니다.

 

 

2. 복합 인덱스 생성하기

MySQL에서 복합 인덱스를 생성하려면 `CREATE INDEX` 또는 `ALTER TABLE` 구문을 사용합니다. 복합 인덱스를 생성하려면 여러 컬럼을 지정해주면 됩니다.

예시 1: 복합 인덱스 생성

CREATE INDEX idx_name ON users(first_name, last_name);

위 예시에서 `users` 테이블에 대해 `first_name`과 `last_name` 컬럼을 결합한 복합 인덱스를 생성합니다. 이 인덱스는 `first_name`과 `last_name`이 동시에 사용되는 쿼리에서 성능을 향상시킬 수 있습니다.

 

예시 2: 복합 인덱스 생성 (ALTER TABLE)

ALTER TABLE users ADD INDEX idx_name (first_name, last_name);

위 예시에서는 `ALTER TABLE` 구문을 사용하여 기존 테이블에 복합 인덱스를 추가합니다. 기존 테이블에서 인덱스를 추가하고 싶을 때 유용하게 사용됩니다.

 

 

3. 복합 인덱스 활용 예시

복합 인덱스는 주로 여러 조건이 결합된 쿼리에서 성능을 최적화하는 데 사용됩니다. 복합 인덱스를 잘 활용하면, 쿼리의 실행 속도를 크게 개선할 수 있습니다.

예시 1: WHERE 절에서 복합 인덱스 사용

다음은 `first_name`과 `last_name` 컬럼을 검색하는 예시입니다. 이때 복합 인덱스가 효율적으로 작동합니다.

SELECT * FROM users
WHERE first_name = 'John' AND last_name = 'Doe';

위 쿼리는 `first_name`과 `last_name` 두 컬럼을 기준으로 데이터를 조회합니다. 복합 인덱스가 있으면, 두 컬럼을 결합하여 빠르게 데이터를 찾을 수 있습니다.

 

예시 2: ORDER BY 절에서 복합 인덱스 사용

복합 인덱스는 `ORDER BY` 절에서 정렬을 최적화하는 데도 유용합니다.

SELECT * FROM users
ORDER BY first_name, last_name;

위 쿼리는 `first_name`과 `last_name` 순서대로 데이터를 정렬합니다. 복합 인덱스가 있을 경우, 인덱스를 활용하여 효율적으로 정렬할 수 있습니다.

 

 

4. 복합 인덱스의 사용 제한

복합 인덱스는 매우 유용하지만, 몇 가지 제한 사항을 고려해야 합니다.

  • 컬럼 순서: 복합 인덱스에서 컬럼의 순서가 중요합니다. 쿼리에서 사용할 조건의 순서와 인덱스 컬럼의 순서가 일치할 때 최적화 효과가 극대화됩니다.
  • 전체 인덱스를 사용할 수 없음: 복합 인덱스는 전체 인덱스를 사용할 수 있지만, 특정 컬럼만 사용할 때는 인덱스가 비효율적일 수 있습니다.
  • 과도한 인덱스 사용: 너무 많은 복합 인덱스를 사용하면, 쓰기 성능이 저하될 수 있습니다. 데이터 삽입, 수정, 삭제 시 인덱스도 갱신해야 하기 때문입니다.

 

5. 복합 인덱스 성능 최적화 팁

  • 검색에 자주 사용되는 컬럼을 먼저 인덱스로 선택하세요. 쿼리에서 자주 조회하는 조건들을 우선적으로 복합 인덱스에 포함시킵니다.
  • 컬럼의 순서가 중요한데, 쿼리에서 조건을 사용할 때 왼쪽부터 차례대로 일치하는 인덱스를 사용할 수 있도록 컬럼을 배치합니다.
  • 복합 인덱스는 가능한 한 적게 사용하여 쓰기 성능에 미치는 영향을 최소화합니다.

복합 인덱스를 잘 활용하면 쿼리 성능을 크게 향상시킬 수 있으며, 데이터베이스의 효율성을 높이는 데 중요한 역할을 합니다.