상세 컨텐츠

본문 제목

database [index]

Database

by 성찬우 2022. 7. 29. 01:07

본문

데이터베이스에서 index란 검색을 하기 위해서 특정 대상을 가리키는 것. 이라고 할 수 있다. 

 

가령 [ xx대학교 \ xx학번 \  성이름 ] 이 모든 요소들이 index가 될 수 있다. 

 

 

index는 왜 필요할까?

 

1. 데이터베이스는 우리가 원하는 데이터를 어떻게 찾아 오는가?

 

2. 왜 느려지는가?

 

3. 왜 조인을 하면 느려지는가?

 

4. 왜 쿼리가 느린가? 

 

 

index 의 종류는 2가지로 나눌 수 있다. 

 

Clustered 그리고 Non-Clustered 이다.  

그림과 같이 cluster 의 의미는 " 무리 " 이다. 

즉, 무리를 이룬 index와 그렇지 않은 index로 나눌 수 있다는 것이다. 

 

그래서 뭘 무리를 이루는 것이냐?  index 와 데이터가 무리를 이룬다는 것이다. 

 

 

표로 함께 확인하자.

1~4 번의 INDEX가 있고 

학교 학번 이름 의 DATABASE가 존재한다.

 

그런데 만약에 2번과 3번 사이에 새로운 [JOKER대학교 \ 12학번  \ JOKER씨] 가 

들어온 다고 했을 때 

이렇게 자리를 하나하나 비켜줘야한다. 이것이 Clustered Index의 특징이다. 

 

다르게 말하면 

1등에서 3등의 범위를 가져오는 쿼리를 진행 했을 경우 매우 빠르게 이를 찾아서 보여 줄 수 있다는것도

큰 장점이라고 할 수 있다. 범위 검색이 매우 빠르다는 것이다.

 

하지만 새로운 정보가 들어올 경우 (INSERT)성능에 문제가 생길 수 있다. 


그렇다면 Non-Clustered Index의 경우는 어떨까?

이렇게 15번째 정보는 347로 가면 알 수 있다. 같이 간접적으로 정보를 알려주는것이 특징이다.

순서와는 상관없고 정보의 위치만을 가지고 있다. 

이렇게 말이다. 

 

 

정리하자면 

Clustered Index 
index 또는 pk는 테이블당 하나씩만을 가진다.
범위 검색에 매우 유리함. 
존재하는 index 또는 pk 사이에 새로운 정보를 insert할 경우 문제가 발생 할 수 있다. 
Non- Clustered Index 
순서랑 상관이 없음.
추가 저장 공간이 필요함. 
insert시에 추가 작업이 필요함. (새로운 index 생성)
Cardinality 카디널러티 -> 고유한 값을 가진 database일 수록 카디널러티가 높다 표현-> index 사용이 매우 좋음.

인덱스 설정에 관하여도 다음에 다시 다룰 예정인데 

 

mysql 인덱스 설정 방법에 대하여 다뤄보겠습니다.

 

 

 

 

 

 

 

 

 

 

관련글 더보기

댓글 영역