LIKE 단어%
를 사용하여 검색할 때는 부분 문자열 검색에 인덱스를 사용할 수 있LIKE %단어
나 LIKE %단어%
로 조회할 때는 인덱스가 적용되지 않고 테이블 Full Scan을 하게 됨ft_stopword_file
시스템 변수로 설정SELECT INDEX_NAME, INDEX_TYPE, COMMENT
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '데이터베이스 이름'
AND TABLE_NAME = '테이블 이름'
AND INDEX_TYPE = 'FULLTEXT';
ngram
이라는 단어에 대한 2-gram은 ng
, gr
, ra
, am
이 됨CREATE TABLE 테이블 이름(
/* 컬럼 생성 쿼리 */
, FULLTEXT 인덱스 이름 (컬럼 이름)
);
CREATE FULLTEXT INDEX 인덱스 이름 ON 테이블 이름 (컬럼 이름);
CREATE TABLE 테이블 이름(
/* 컬럼 생성 쿼리 */
, FULLTEXT 인덱스 이름 (컬럼 이름) WITH PARSER ngram
);
CREATE FULLTEXT INDEX 인덱스 이름 ON 테이블 이름 (컬럼 이름) WITH PARSER ngram;
SHOW INDEX FROM `테이블 이름` WHERE Index_type = 'FULLTEXT';
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '데이터베이스 이름'
AND TABLE_NAME = '테이블 이름'
AND INDEX_TYPE = 'FULLTEXT';
SELECT * FROM 테이블 이름
WHERE MATCH(컬럼 이름) AGAINST('검색어' IN NATURAL LANGUAGE MODE);
SELECT * FROM 테이블 이름
WHERE MATCH(컬럼 이름) AGAINST('검색어' IN BOOLEAN MODE);
[mysqld]
ngram_token_size=1
[mysqld]
innodb_ft_min_token_size=2 /* InnoDB 엔진 */
[mysqld]
ft_min_word_len=2 /* MyISAM 엔진 */