태그 테이블 인덱스 생성 및 관리
마크베이스의 태그테이블에는 추가 칼럼에 대한 TAG 인덱스 타입을 생성할 수 있다.
자세한 내용은 SQL 레퍼런스의 DDL 페이지의 CREATE INDEX 문단을 참조하면 된다.
TAG 인덱스: 기본칼럼(time, name)등을 제외한 추가 칼럼에 대한 인덱스
인덱스 생성
CREATE INDEX 구문을 이용하여 특정 컬럼에 대해서 인덱스를 생성한다.
CREATE INDEX index_name ON table_name (column_name) [index_type]
index_type ::= INDEX_TYPE { TAG }
Mach> CREATE INDEX id_index ON tag (id) INDEX_TYPE TAG;
Created successfully.
7.5 버전부터 tag table에 한해 json 타입의 칼럼에 대해서 json path 별로 인덱스를 생성할 수 있다.
기존의 인덱스 생성 구문에 json path를 operator와 연결하면 된다.
json operator의 return 타입이 varchar이므로, varchar 비교 시 인덱스를 사용할 수 있다.
Mach> CREATE TAG TABLE tag (name VARCHAR(20) PRIMARY KEY, time DATETIME BASETIME, jval JSON);
Executed successfully.
Mach> CREATE INDEX idx_jval_value1 ON tag (jval->'$.value1');
Created successfully.
Mach> CREATE INDEX idx_jval_value2 ON tag (jval->'$.value2');
Created successfully.
Mach> EXPLAIN SELECT * FROM tag WHERE jval->'$.value1' = '10';
PLAN
------------------------------------------------------------------------------------
PROJECT
TAG READ (RAW)
KEYVALUE INDEX SCAN (_TAG_DATA_0)
[KEY RANGE]
* jval->'$.value1' = '10'
VOLATILE FULL SCAN (_TAG_META)
[6] row(s) selected.
인덱스 삭제
DROP INDEX 구문을 이용하여 지정된 인덱스를 삭제한다. 단, 해당 테이블을 검색 중인 다른 세션이 존재할 경우에는 에러를 내면서 실패한다.
DROP INDEX index_name;
Mach> DROP INDEX id_index;
Dropped successfully.
최근 업데이트