Database/Mysql

[Real MySQL] 8-7. 인덱스: 멀티 밸류 인덱스

noahkim_ 2024. 9. 7. 12:33

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.

 

1. 멀티 밸류 인덱스

  • 하나의 데이터 레코드가 여러 개의 키 값을 가질 수 있는 형태의 인덱스
  • JSON 배열과 같은 비정형 데이터에서 원소별 인덱싱이 필요할 때 사용됨

 

특징

인덱스 내에서 하나의 레코드가 여러 개의 엔트리를 가질 수 있음
  • JSON 필드에 저장된 배열 원소들에 대한 인덱싱을 위해 설계됨
  • 배열을 가진 모든 레코드에 대해 다수의 인덱스 엔트리가 생성되므로, 인덱스 크기가 커질 수 있음

 

예시

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    items JSON,
    INDEX idx_items ((CAST(items->'$[*]' AS UNSIGNED ARRAY)))
);

 

반드시 함수들을 이용해서 검색해야 옵티마이저가 인덱스를 활용한 실행 계획을 수립함
SELECT * FROM orders WHERE JSON_CONTAINS(items, '3', '$');
  • 일반적인 LIKE 쿼리는 인덱스를 활용하지 않음