데이터 분석 기술 블로그

인덱스 본문

SQL/개념

인덱스

데이터분석가 이채은 2024. 12. 28. 19:17

인덱스란?

"인덱스(Index)"는 데이터베이스에서 검색 속도를 향상하기 위해 사용하는 구조입니다. 책의 목차처럼 테이블의 특정 컬럼에 대해 빠르게 데이터를 찾을 수 있도록 돕습니다. 인덱스를 생성하면 데이터베이스가 해당 컬럼에 대해 정렬된 구조를 유지하여, 검색과 정렬 작업이 더 효율적으로 수행됩니다.


인덱스의 개념

 

  1. 빠른 데이터 검색:
    • 테이블의 데이터 전체를 탐색(Full Table Scan)하지 않고, 인덱스를 통해 필요한 데이터를 빠르게 찾아냅니다.
  2. 정렬된 데이터 구조:
    • 대부분의 인덱스는 B-Tree 구조를 사용하여 정렬된 상태를 유지합니다.
  3. 추가 저장 공간:
    • 인덱스는 별도의 데이터 구조이므로 추가적인 저장 공간이 필요합니다.
  4. 쓰기 작업의 부담:
    • 데이터를 삽입, 수정, 삭제할 때 인덱스를 갱신해야 하므로, 쓰기 성능은 약간 저하될 수 있습니다.
    •  

인덱스를 사용하는 이유

 

  • 대규모 데이터베이스에서 검색 속도를 개선.
  • WHERE, ORDER BY, GROUP BY, JOIN 등의 조건이 포함된 쿼리에서 성능 향상.
  • 고유성을 보장하기 위해 UNIQUE INDEX를 생성.

인덱스의 종류

 

  1. 기본 인덱스 (Primary Index):
    • 기본 키(Primary Key) 컬럼에 자동으로 생성됩니다.
    • 유일성과 비어 있지 않은 값을 보장합니다.
  2. 보조 인덱스 (Secondary Index):
    • 기본 키 외의 컬럼에 대해 생성한 인덱스.
    • 검색 속도를 높이기 위해 사용.
  3. 유니크 인덱스 (Unique Index):
    • 컬럼 값의 중복을 허용하지 않는 인덱스.
  4. 복합 인덱스 (Composite Index):
    • 두 개 이상의 컬럼을 조합하여 생성한 인덱스.
    • 다중 조건 검색에 유리.
  5. 클러스터형 인덱스 (Clustered Index):
    • 테이블 데이터가 인덱스에 따라 정렬됩니다.
    • MySQL의 InnoDB에서 기본 키가 클러스터형 인덱스로 생성.
  6. 비클러스터형 인덱스 (Non-Clustered Index):
    • 인덱스와 실제 데이터가 별도로 저장됩니다.
    • 주로 보조 인덱스에서 사용.

인덱스 생성

1. 기본 인덱스 생성:

CREATE INDEX idx_column_name ON table_name(column_name);

 

 

 

 

  • idx_column_name: 인덱스 이름.
  • column_name: 인덱스를 생성할 컬럼.

2. 유니크 인덱스 생성:

CREATE UNIQUE INDEX idx_unique_name ON table_name(column_name);

3. 복합 인덱스 생성:

CREATE INDEX idx_composite ON table_name(column1, column2);

4. 인덱스 확인:

SHOW INDEX FROM table_name;

5. 인덱스 삭제:

DROP INDEX idx_column_name ON table_name;

예제

 

-- 급여 검색 속도 향상을 위한 인덱스 생성
CREATE INDEX idx_salary ON employees(salary);

-- 특정 급여 이상인 직원 검색
SELECT name, salary
FROM employees
WHERE salary > 50000;

'SQL > 개념' 카테고리의 다른 글

ROW_NUMBER  (0) 2024.12.31
RANK  (0) 2024.12.30
ALTER 명령어  (1) 2024.12.24
CREATE 명령어  (0) 2024.12.23
DELETE 명령어  (0) 2024.12.22