DB/MySQL

[MySQL] 인덱스

오늘도개발 2024. 6. 27. 10:56

 

1. 인덱스란?

 

  - 인덱스(index)는 데이터베이스 테이블의 열(또는 열의 집합)에 대해 검색 성능을 향상시키기 위해 사용 되는 데이터 구조

 

  - 인덱스는 데이터를 보다 빠르게 검색하고 정렬하는 데 도움을 줌

 

  - 인덱스는 책의 색인처럼 동작

 

  - 특정 컬럼에 인덱스를 생성하면, MySQL은 그 컬럼의 값을 정렬된 데이터 구조(B+트리)로 저장

 

 

 

2. 인덱스의 종류

 

  - PRIMARY KEY : 기본 키 인덱스, 테이블의 각 행을 고유하게 식별하는 데 사용( 테이블당 하나의 기본 키만 존재 )

 

  - UNIQUE : 고유 인덱스, 해당 열의 모든 값이 고유함을 보장( 중복된 값을 허용하지 않음 )

 

  - INDEX (또는 KEY) : 일반 인덱스, 검색 속도를 향상시키는 데 사용( 중복된 값을 허용 )

 

  - FULLTEXT : 전문 검색 인덱스, 텍스트 기반 검색을 위해 사용( 큰 텍스트 필드에서 전체 텍스트 검색을 수행할때 사용 )

 

  - SPATIAL : 공간 인덱스, GIS(Geographic Information System) 데이터 타입에 사용

 

 

3. 인덱스의 생성 및 관리

 

  - CREATE INDEX을 사용하여 생성

   > CREATE INDEX index_name ON table_name(column_name);

 

  - SHOW INDEX을 사용하여 조회

   > SHOW INDEX FROM table_name;

 

  - EXPLAIN 을 사용하여인덱스 사용 여부를 분석

   > EXPLAIN SELECT * FROM table_name WHERE column_name = 'value';

 

  - DROP INDEX을 사용하여 삭제

   > DROP INDEX index_name ON table_name;

 

 

 

4. 인덱스의 장점

 

  - 검색 성능 향상 : 인덱스를 사용하면 WHERE 절에서 조건을 만족하는 행을 더 빠르게 찾을 수 있음 

 

  - 정렬 성능 향상 : ORDER BY 절을 사용할 때 인덱스가 존재하면 정렬 속도가 향상됨

 

  - 고유성 보장 : UNIQUE 인덱스를 사용하여 열의 고유성을 보장할 수 있음

 

 

5. 인덱스의 단점

 

  - 쓰기 성능 저하 : 인덱스를 추가하면 INSERT, UPDATE, DELETE 작업 시 인덱스를 갱신해야 하므로 성능이 저하될 수 있음

 

  - 디스크 공간 사용 증가 : 인덱스를 저장하기 위해 추가적인 디스크 공간 필요

 

  - 복잡성 증가 : 잘못된 인덱스를 사용하면 오히려 성능이 저하

 

 

6. 인덱스 사용시 고려 사항

 

  - WHERE, JOIN, ORDER BY, GROUP BY 절에서 자주 사용되는 열에 인덱스를 생성하는 것이 좋음

 

  - 중복된 값이 적고 다양한 값을 가지는 열에 인덱스를 생성하면 효율적

 

  - 너무 많은 인덱스를 생성하면 쓰기 성능 저하 발생 가능

'DB > MySQL' 카테고리의 다른 글

[MySQL] B+tree  (0) 2024.06.27
[MySQL] 스토어드 프로시저  (0) 2024.06.26
[MySQL] 함수  (0) 2024.06.26
[MySQL] 서브쿼리  (0) 2024.06.25
[MySQL] 테이블 조인  (0) 2024.06.21