DB Index (DB 인덱스)
데이터베이스 테이블에 대한 검색 성능 속도를 높여주는 자료 구조
DB 테이블에서 특정 컬럼에 인덱스를 생성하면, 컬럼 데이터를 오름차순으로 정렬하고,
별도의 메모리에 컬럼의 값과 데이터의 몰리적 주소를 (Key, Value) 한 쌍으로 저장한다.
DB Index의 장점과 단점
장점
- 테이블 조회 속도와 그에 따른 성능 향상
- 전반적인 시스템 부하를 줄일 수 있음
단점
- 인덱스를 관리하기 위한 추가 작업 필요
- 인덱스를 사용하기 위한 추가 저장공간 필요
Index를 사용하기 좋은 경우
- 규모가 큰 테이블
- INSERT, UPDATE, DELETE 작업이 적은 컬럼
- WHERE, ORDER BY, JOIN 등이 자주 사용되는 컬럼
- 데이터 중복도가 낮은 컬럼
Composite Index(결합 인덱스)
인덱스를 생성 할 때 두 개 이상의 컬럼을 합쳐서 인덱스를 생성하는 것
SQL문에서 WHERE절의 조건이 2개 이상의 AND로 연결되어 사용하는 경우에 자주 사용한다.
결합 인덱스의 컬럼 순서
결합 인덱스의 컬럼 설정 시, 컬럼의 배열 순서에 따라 인덱스 발동 여부가 결정되므로 컬럼의 순서가 중요하다.
쿼리문 작성 시 결합 인덱스를 사용하고자 한다면 반드시 결합 인덱스의 선행 컬럼부터 조건에 지정해야 한다.
결합 인덱스 컬럼의 설정 시 우선순위는 다음과 같다.
1. WHERE절 조건에 많이 사용되는 컬럼이 우선시
2. Equal('=')로 사용되는 컬럼 우선
3. 분포도가 좋은 컬럼을 우선
4. 자주 이용되는 순서대로 결합 인덱스 컬럼의 순서 결정
ex)
결합 인덱스 생성
create index test_index on test(A, B, C);
결합 인덱스가 사용되는 경우
select * from test where A = 'Acontent';
select * from test where A = 'Acontent' and B ='Bcontent';
select * from test where A = 'Acontent' and B = 'Bcontent' and C = 'Ccontent';
결합 인덱스가 사용되지 않는 경우
select * from test where A = 'Acontent' and C = 'Ccontent'
// C를 컬럼을 타기 위해선 B 테이블이 선행조건으로 필요하기 때문
select * from test where B = 'Bcontent';
select * from test where C = 'Ccontent'
select * from test where B = 'Bcontent' and C = 'Ccontent';
'Database > Database 이론' 카테고리의 다른 글
영속성 (Persistence) (0) | 2023.04.23 |
---|---|
DB Clustering (DB 클러스터링)과 Replication(리플리케이션) (0) | 2023.02.14 |
Auto Scaling (0) | 2023.02.14 |
RDBMS(관계형 DB) 과 NOSQL(비 관계형 DB) (0) | 2023.02.13 |
로드 밸런싱 (Load Balancing)과 라운드 로빈(Round Robin Method) (0) | 2023.02.13 |