본문 바로가기
CS/데이터베이스

조회 최적화를 위한 인덱스 이해하기 - 08. 인덱스를 다룰 때 주의해야 할 점

by 컴쏘 2023. 6. 4.

1. 인덱스 필드 가공

인덱스 필드에 가공이 들어가면 인덱스로 찾을 수 없음

// age는 int 타입
SELECT *
FROM Member
WHERE age*10 = 1  // 10을 곱하면 검색이 안됨 
// age는 int 타입
SELECT *
FROM Member
WHERE age = '1'  // type을 잘못 넣어준 경우  

2. 복합 인덱스

왼쪽처럼 1개의 인덱스가 아닌 오른쪽처럼 복합 인덱스가 되면?

  • 우선적으로 과일 컬럼이 정렬
  • 과일 컬럼이 정렬되면 그 안에서 원산지 컬럼이 정렬됨
  • 따라서 복합 인덱스에서 중요한 것은 선두 컬럼이다.
    • 데이터의 식별 정도가 높은 값이 선두에 있는 것이 좋음

3. 하나의 쿼리에는 하나의 인덱스만

하나의 쿼리에는 하나의 인덱스만 탄다.

여러 인덱스 테이블을 동시에 탐색하지 않음

*index merge hint를 사용하면 여러 인덱스 가능

따라서 WHERE, ORDER BY, GROUP BY 혼합해서 사용할 때에는 인덱스를 잘 고려해야 함

주의

  • 의도대로 인덱스가 동작하지 않을 수 있음. explain으로 확인
  • 인덱스도 비용이다. 쓰기를 희생하고 조회를 얻는 것
  • 꼭 인덱스로만 해결할 수 있는 문제인가?
    • 인덱스로 푸는 것이 가장 간단함 (코드의 변경이 없기 때문)
    • 조회 조건, 정렬 조건이 많이 바뀌게 됨 → 인덱스로 해결할 수 없는 상황이 올 수 있음

2023 KAKAO Tech Campus_BackEnd 필수 과정
DB(MySQL) 강의 정리 내용입니다.