[Database] 4. Index 사용 시 장점과 단점
zbqmgldjfh opened this issue · 1 comments
zbqmgldjfh commented
Index 사용 시 장점과 단점에 대하여 알아봅시다.
키워드
인덱스
, Index
, B+ Tree
zbqmgldjfh commented
인덱스(Index)는 데이터베이스의 테이블에 대한 검색 속도를 향상시키기위해 사용합니다.
장점
테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장되는데, 대부분 B+ tree 자료구조로 생성되며 빠르게 조회할 수 있도록 돕고 있다.
기존엔 Where문으로 특정 조건의 데이터를 찾기 위해서 테이블의 전체를 조건과 비교해야 하는 '풀 테이블 스캔(Full Table Scan)' 작업이 필요했는데, 인덱스를 이용하면 데이터들이 정렬되어 있기 때문에 조건에 맞는 데이터를 빠르게 찾을 수 있게 된 것 이다.
단점
- 인덱스를 관리하기 위한 추가 작업이 필요
- 추가 저장 공간 필요
- 잘못 사용하는 경우 오히려 검색 성능 저하
인덱스를 사용하면 Search의 속도가 향상되지만, 인덱스를 항상 정렬된 상태로 유지해야 하기 때문에 인덱스가 적용된 컬럼에 삽입(INSERT), 삭제(DELETE), 수정(UPDATE) 작업을 수행하면 오히려 성능이 저하될 수 있습니다.
또한 인덱스는 전체 데이터의 20% 이상의 데이터를 처리하는 경우 차라리 Full Scan이 효율이 더 좋으며,
데이터의 형식에 따라 오히려 성능이 낮아질 수 있습니다.
예를 들어 나이나 성별과 같이 range가 적은 컬럼인 경우, 인덱스를 읽고 나서 다시 많은 데이터를 조회해야 하기 때문에 비효율적입니다.