CS/데이터베이스

인덱스의 정의

KDGdev 2023. 2. 27. 20:23

인덱스(Index)의 정의


데이터 베이스에서 인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치입니다.

 

원하는 레코드를 찾으려고 할 때 인덱스가 없으면 모든 레코드를 하나씩 확인해 봐야 합니다.

 

이는 Full Scan 방식으로 인덱스를 사용하는 방법에 비해 느리다는 단점이 있습니다.

인덱스는 한 컬럼을 복사한 것

인덱스를 좀 더 구체적으로 설명하자면 테이블의 한 컬럼을 복사하여 정렬한 것입니다.

 

이렇게 복사해서 만든 인덱스는 데이터가 들어가 있는 것이 아니라 원래 테이블에서 해당 레코드의 주소가 들어있습니다. 원하는 레코드를 찾는 방법은 인덱스에서 이 주소를 찾는 개념입니다.

레코드를 찾는 방법

 인덱스를 사용하면 빠른 속도로 원하는 레코드에 접근할 수 있고 이로인해 서버의 부하를 줄일 수 있습니다.

 

하지만 장점만 있는 것은 아닙니다.

 

 

인덱스를 생성하면 DB의 저장공간을 차지하게 됩니다.

 

또한 테이블에 새로운 데이터가 생성되거나 삭제될 때 인덱스에도 추가적인 연산을 해주어야 합니다.

 

이러한 특징으로 인덱스는 데이터의 변경이 잦은 테이블보단 검색을 많이하는 테이블, 규모가 커서 풀스캔 방식은 시간이 오래 걸리는 테이블에서 강점을 발휘할 수 있습니다.

 

 

여기서 위의 방식처럼 한 컬럼을 복사하여 만든 인덱스를 넌클러스터드 인덱스라고 부릅니다.

 

하지만 위와 같이 id가 있는 테이블은 이미 정렬이 되어 있기에 인덱스를 만들 필요가 없습니다.

 

이처럼 id와 같은 컬럼을 클러스터드 인덱스라고 합니다.

 

 

 

※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.