이론 정리/Database

부분 인덱스

철매존 2024. 9. 21. 21:25
728x90

부분 인덱스

그냥 간단하게 말하자면 인덱스 기준을 전체가 아니라 일부분에만 거는 것이다.

이게 뭐임

  • 말 그대로 부분적인 인덱스
  • 개발할 때에 MySQL 에서 VARCHAR(255) 이런 식으로 좀 큰 데이터를 사용하는 경우가 있는데, 이런 큰 값에 대해 인덱스를 걸어주는건 힘들다.
    • 근데 이거 뒤에까지 다 쓰지는 않지만 앞부분에 대한 검색이 종종 일어날 수는 있다.

장점

  • 인덱스 크기 설정 가능
    • 일부분에 대해서만 인덱스를 생성하기 때문에
      • 저장 공간이 절약된다.
      • 인덱스 조회 속도가 향상된다.
      • 인덱스 생성할 때에 시간소요가 줄어든다.
  • 말하자면, 그냥 작은 인덱스를 만들기 때문에 전체를 다 만드는 것 보다 확실히 공간이나 속도 면에서 장점이 있다는 것이다.

단점?

  • 인덱스 크기를 설정해서 발생
    • 일부분에 대해서만 인덱스가 생성되기 때문에
      • 유니크 값을 보장할 수 없을수 있다. (이 때에는 인덱스 사용 이유가 퇴색된다.)
        • 예를 들어 ryoochanGood, ryoochanGad, ryoochanHandsome 3개가 있을 때에 부분 인덱스가 앞의 8자가 기준이면 다 동일하게 생각한다.
      • 여러 방식으로 검색한다면?
        • 이렇게 일부분만 짜르는 방식은 좋지 않다.

그럼 이걸 어따쓰지

  • suffix가 있거나 앞부분이 실제 검색에서 활용되는 경우
  • 간단하게 말하면 일부분 을 활용할 일이 많다면, 이 때에 잘 만들어 주면 이득이 된다.