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 |