Study/Real-MySQL

8.7 멀티 밸류 인덱스

hongeeii 2024. 1. 5. 16:51
728x90
반응형

8.7 멀티 밸류 인덱스

전문 검색 인덱스를 제외한 모든 인덱스는 레코드 1건이 1개의 인덱스 키값을 가진다.

하지만 멀티 벨류 인덱스는 하나의 데이터 레코드가 여러개의 키 값을 가질 수 있는 형태의 인덱스이다.

원래는 이런 인덱스는 정규화에 위배되는 형태임.

=> 최근 RDBMS들이 JSON 데이터 타입을 지원하기 시작

=> JOSN의 배열 타입의 필드에 저장된 원소들에 대한 인덱스 요건이 발생

=> 그래서 만듬

create table user2(
    user_id bigint auto_increment primary key,
    first_name varchar(10),
    last_name varchar(10),
    credit_info json,
    index mx_creditscores ( (cast(credit_info -> '$.credit_scores' as unsigned array)) )
);

insert into user2 values(1, 'Matt', 'Lee', '{"credit_scores" : [360, 353, 351]}');

멀티 밸류 인덱스를 활용하려면 반드시 다음의 함수를 이용해서 검색해야함.

  • member of()
  • json_contains()
  • json_overlaps()

JSON 데이터 사용 참고

select * from user2
where 360 member of(credit_info -> '$.credit_scores');

explain
select * from user2
where 360 member of(credit_info -> '$.credit_scores');

image

image

728x90
반응형