목록으로
DB

인덱스에 대해서 알아보자

Dev Park
11/1/2022
23 views

서론

데이터베이스를 다루다보면 알아야하는 여러가지 개념중 인덱스라는 것이 있다.
인덱스가 무엇인지 알아보자.

인덱스란?

인덱스는 데이터베이스 테이블에서 데이터에 대한 검색속도를 향상시켜주는 자료구조이다.
특정 컬럼에 인덱스를 생성할 수 있고, 인덱스가 생성되면 별도의 메모리 공간에 데이터를 정렬하여 물리적 주소와 함께 저장한다.
책에서 무슨 내용이 있고, 페이지가 나와있는 목차를 생각하면 이해하기 편하다.

왜 인덱스를 사용해야할까?

앞서 말했듯이 인덱스는 테이블의 검색 속도를 향상시킨다.
그 원리는 데이터를 정렬하여 물리적 주소와 함께 검색하기때문에 기존에 사용하던 Where문처럼 테이블 전체를 스캔하는 것이 아니라, 인덱스만 스캔하여 조건에 맞는 데이터를 빨리 찾을 수 있다.
그렇기때문에 검색 속도 향상뿐만이 아닌, 성능적인 측면이나 시스템의 부하에 대해서도 이득을 가져갈 수 있다.

인덱스가 무조건 좋은 것일까?

위와 같은 좋은점이 있지만 우리는 모든 테이블에 인덱스를 만들지 않는다.
그 이유는 모든 작업에서 인덱스가 이득을 주지않기 때문이고, 또한 인덱스를 관리하기 위한 작업과 추가적인 공간이 필요하기 때문이다.

중복되는 데이터가 많은 테이블의 경우 인덱스의 효율이 떨어진다.
또한 데이터를 검색하는 것이 아닌 추가하거나 삭제할 경우, 인덱스 전체를 다시 만들어야하기때문에 오히려 성능이 저하되는 현상이 생긴다.
그렇기때문에 인덱스를 올바르게 사용해야 이러한 단점들을 보완할 수 있다.

인덱스는 어떤 곳에 사용하면 좋을까?

일단 데이터가 규칙을 가지지않고 광범위한, 그리고 중복이 최대한 적은 컬럼에 사용하면 좋다.
또한 데이터가 자주 수정되지않고, 자주 조회하여 데이터를 가져오는 컬럼에 사용하면 좋다.

마치며

인덱스를 잘사용하면 데이터베이스의 성능을 향상시킬 수 있다.
하지만 잘못사용하면 오히려 안좋은 영향을 끼치니 조심하는 것이 좋다.