이론 정리/Database
부분 인덱스
철매존
2024. 9. 21. 21:25
728x90
부분 인덱스
그냥 간단하게 말하자면 인덱스 기준을 전체가 아니라 일부분에만 거는 것이다.
이게 뭐임
- 말 그대로 부분적인 인덱스
- 개발할 때에 MySQL 에서 VARCHAR(255) 이런 식으로 좀 큰 데이터를 사용하는 경우가 있는데, 이런 큰 값에 대해 인덱스를 걸어주는건 힘들다.
- 근데 이거 뒤에까지 다 쓰지는 않지만 앞부분에 대한 검색이 종종 일어날 수는 있다.
장점
- 인덱스 크기 설정 가능
- 일부분에 대해서만 인덱스를 생성하기 때문에
- 저장 공간이 절약된다.
- 인덱스 조회 속도가 향상된다.
- 인덱스 생성할 때에 시간소요가 줄어든다.
- 일부분에 대해서만 인덱스를 생성하기 때문에
- 말하자면, 그냥 작은 인덱스를 만들기 때문에 전체를 다 만드는 것 보다 확실히 공간이나 속도 면에서 장점이 있다는 것이다.
단점?
- 인덱스 크기를 설정해서 발생
- 일부분에 대해서만 인덱스가 생성되기 때문에
- 유니크 값을 보장할 수 없을수 있다. (이 때에는 인덱스 사용 이유가 퇴색된다.)
- 예를 들어 ryoochanGood, ryoochanGad, ryoochanHandsome 3개가 있을 때에 부분 인덱스가 앞의 8자가 기준이면 다 동일하게 생각한다.
- 여러 방식으로 검색한다면?
- 이렇게 일부분만 짜르는 방식은 좋지 않다.
- 유니크 값을 보장할 수 없을수 있다. (이 때에는 인덱스 사용 이유가 퇴색된다.)
- 일부분에 대해서만 인덱스가 생성되기 때문에
그럼 이걸 어따쓰지
- suffix가 있거나 앞부분이 실제 검색에서 활용되는 경우
- ryoochan@naver.com, ryoochan@hanmail.com, ryoochan@gmail.com ... 이런 식으로 이메일 앞부분의 길이가 정해져 있고, 뒤는 딱히 중요하지 않은 경우
- 간단하게 말하면 일부분 을 활용할 일이 많다면, 이 때에 잘 만들어 주면 이득이 된다.