인덱스 (Index)
인덱스는 RDBMS에서 검색 속도를 높이기 위해 사용하는 하나의 기술입니다.
인덱스는 색인으로서 해당 테이블의 컬럼을 색인화(따로 파일로 저장)합니다.
따라서, 검색 시 해당 테이블의 레코드 전체를 스캔하는 것이 아니라 색인화 되어있는 인덱스 파일을 검색하여 검색 속도를 빠르게 합니다.
인덱스 구조는 Tree 구조로 색인화되고, RDBMS에서는 Balance Search Tree 구조로 사용됩니다.
인덱스의 원리
인덱스를 어느 한 컬럼에 사용하면, 초기 테이블 생성 시 FRM, MYD, MYI 3개의 파일이 만들어집니다.
- FRM : 테이블 구조가 저장되어 있는 파일
- MYD : 실제 데이터가 있는 파일
- MYI : 인덱스 정보가 들어있는 파일
인덱스를 해당 컬럼에 만들게 되면 해당 컬럼을 따로 인덱싱하여 MYI 파일에 입력합니다.
하지만, 인덱스를 사용하지 않는 경우에는 MYI 파일은 비어져 있습니다.
이후에 사용자가 SELECT 쿼리로 인덱스를 사용하는 컬럼을 탐색 시 해당 테이블을 검색하는 것이 아니라 MYI 파일의 내용을 검색합니다.
인덱스의 장점
- 테이블의 기본키는 자동으로 인덱스됩니다.
- 키 값을 기초로 하여 테이블에서 검색 속도와 정렬 속도를 향상시킵니다.
- 인덱스를 사용하면 테이블 행의 고유성을 강화시킬 수 있습니다.
- 필드 중에는 데이터 형식 때문에 인덱스될 수 없는 필드도 있습니다.
- 여러 필드로 이루어진 인덱스를 사용하면 첫 필드 값이 같은 레코드도 구분할 수 있습니다.
인덱스의 단점
- 인덱스를 만들면 .mdb 파일 크기가 늘어납니다.
- 인덱스가 데이터베이스 공간을 차지하게 되어 추가적인 공간이 필요하게 됩니다.
- 인덱스를 생성하는데 시간이 많이 소요될 수 있습니다.
- 사용자가 한 페이지를 동시에 수정할 수 있는 병행성이 줄어듭니다.
- 데이터 변경 작업이 자주 일어날 경우, 인덱스를 재작성해야 할 필요가 있기에 성능에 영향을 끼칠 수 있습니다.
인덱스를 사용하면 좋은 경우와 나쁜 경우
- 나쁜 경우
- 데이터 중복도가 높은 Column
- DML이 자주 일어나는 Column
728x90
반응형
'CS 지식 > 데이터베이스' 카테고리의 다른 글
[CS] 트랜잭션 (0) | 2024.02.02 |
---|---|
[CS] 정규화 (0) | 2024.01.31 |
[CS] 이상 현상 (0) | 2024.01.30 |
[CS] SQL - JOIN (0) | 2024.01.17 |
[CS] SQL - 추가 문법 정리 (0) | 2024.01.16 |