MySQL 인덱스 유형 종류
MySQL은 데이터 검색 속도를 향상시키고 쿼리의 성능을 최적화하기 위해 여러 유형의 인덱스를 제공함.
각 인덱스 유형은 특정 작업에 특화되어 있음.
사용하는 스토리지 엔진에 따라 지원되는 인덱스 유형이 다를 수 있음.
1. B-Tree 인덱스
가장 일반적인 인덱스 유형임.
키 값이 트리 구조로 정렬되어 저장됨.
B-Tree 인덱스는 등호 및 범위 쿼리에 효율적이며, InnoDB와 MyISAM 스토리지 엔진에서 사용할 수 있음.
B-Tree는 순차적 검색 뿐만 아니라, 부분적인 값 매칭과 정렬된 데이터에 대한 빠른 접근을 제공함.
2. HASH 인덱스
Memory 스토리지 엔진에서 주로 사용되는 인덱스 유형임.
해시 인덱스는 키 값을 해시 함수를 통해 해시로 변환하고, 이 해시를 사용하여 데이터를 빠르게 찾음.
해시 인덱스는 등호 쿼리에 최적화되어 있으나, 범위 쿼리나 정렬 작업에는 적합하지 않음.
3. R-Tree 인덱스
공간 데이터를 인덱싱하는 데 사용됨.
주로 GIS(지리 정보 시스템) 데이터를 다루는데 적합함.
R-Tree 인덱스는 공간적으로 가까운 객체들을 그룹화하여 저장하고, 공간 쿼리와 공간적 상호 작용을 효과적으로 처리함.
MyISAM 스토리지 엔진에서 주로 지원됨.
4. FULLTEXT 인덱스
텍스트 기반의 쿼리를 최적화하기 위해 설계된 인덱스임.
MyISAM에서 처음 도입되었으며 이후 InnoDB에서도 지원하기 시작함.
FULLTEXT 인덱스는 자연어 처리에 최적화됨.
MATCH() ... AGAINST() 구문을 사용하여 텍스트 데이터 내에서 키워드 검색을 수행함.
이 인덱스는 블로그, 뉴스 포털, 문서 관리 시스템 등 대량의 텍스트 데이터를 취급하는 애플리케이션에서 유용함.
5. 커버링 인덱스
쿼리에 필요한 모든 데이터를 인덱스 자체에서 제공할 수 있는 경우, 해당 인덱스를 커버링 인덱스라고 함.
커버링 인덱스는 데이터 파일 자체에 접근할 필요 없이 인덱스 정보만으로 쿼리를 해결할 수 있어 성능이 크게 향상됨.
모든 스토리지 엔진에서 사용 가능하며, 쿼리의 SELECT 절에 있는 컬럼들이 인덱스에 모두 포함된 경우에 이를 활용할 수 있음.
MySQL 인덱스 사용시 고려사항
1. 인덱스 오버헤드
인덱스는 데이터 검색 속도를 높이지만, 추가적으로 디스크 공간을 사용하고, 데이터 삽입이나 수정 시 성능 저하를 일으킬 수 있음.
2. 적절한 인덱스 선택
사용되는 쿼리 유형과 데이터의 특성을 고려하여 가장 적합한 인덱스 유형을 선택해야 함.
예를 들어, 자주 변경되지 않고 주로 읽기 작업이 이루어지는 대규모 데이터베이스에는 B-Tree 인덱스가 적합할 수 있음.
MySQL 인덱스 정리
인덱스는 데이터베이스 성능 향상에 결정적일 역할을 함.
적절한 인덱스 설계와 유지 관리가 필수적임.
데이터와 쿼리 패턴을 정기적으로 분석하여 인덱스를 최적화하고, 불필요한 인덱스를 제거하는 것이 중요함.
'Database > SQL' 카테고리의 다른 글
[MySQL] 테이블 종류, 표준 SQL (0) | 2024.06.07 |
---|---|
[MySQL] Transactional Outbox Pattern, 비동기 통신 (0) | 2024.06.06 |
[MySQL] 스토리지 엔진 종류, B-Tree 인덱스 (0) | 2024.06.06 |
[MySQL] Lock, 데드락 (0) | 2024.06.06 |
[MySQL] 데이터 타입 (0) | 2024.06.04 |