데이터 베이스
- Index
DB에서 Index란?
- 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조이다.
- 검색연산의 최적화를 위해 DB 내 값의 주소정보로 구성된 데이터 구조 (키:주소)
- 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 (인덱스 생성 시 데이터를 오름차순으로 정렬)
Index는 검색 성능의 속도를 올려주는 좋은 자료구조이지만 모든 데이터 컬럼에 인덱스를 생성하지 않는다. 그 이유는?
- 인덱스의 가장 큰 문제점은 정렬된 상태를 계속 유지시켜줘야 한다는 점인데 이런점에서 인덱스는 DML (Data manipulation language)에 아주 취약
- 인덱스는 테이블의 전체 데이터 중에서 10~15% 이하의 데이터를 처리하는 경우에만 효율적이다.
- 인덱스를 관리하기 위해서는 데이터베이스의 약 10%에 해당하는 저장공간이 필요하기 때문에 모든 요소에 인덱스를 걸 경우 성능 부하가 올 수 있음
- 복합 인덱스 (결합 인덱스)
- 아래와 같은 두 개 이상의 컬럼을 합쳐서 인덱스를 만들어 효율성을 높인다
- where절에서 and 조건으로 자주 결합되어 사용되면서 각각의 분포도 보다 두 개 이상의 컬럼이 결합될 때 분포도가 좋아지는 컬럼들
- 다른 테이블과 조인의 연결고리로 자주 사용되는 컬럼들
- order by에서 자주 사용되는 컬럼들
- 하나 이상의 키 컬럼 조건으로 같은 테이블의 컬럼들이 자주 조회될 때
'woncoding > TIL' 카테고리의 다른 글
| TIL | 1.19.목 [CS 기초지식 | 정규화] (0) | 2023.01.25 |
|---|---|
| TIL | 1.18.수 [CS 기초지식 | 트랜잭션] (0) | 2023.01.25 |
| TIL | 1.16.월 [CS 기초지식 | Django 질의응답] (1) | 2023.01.16 |
| TIL | 1.6.금 [CS 기초지식 | 우선순위 큐] (0) | 2023.01.07 |
| TIL | 1.5.목 [CS 기초지식 | 해시 테이블] (0) | 2023.01.05 |