12.9.5 Full-Text 제한
전체 텍스트 검색은
InnoDB
와MyISAM
테이블에서만 지원되고 있습니다.InnoDB
테이블에서FULLTEXT
인덱스가 지원되도록하려면 MySQL 5.6.4 이상이 필요합니다.파티션 된 테이블에서는 전체 텍스트 검색이 지원되지 않습니다. 섹션 19.6 "파티셔닝 제약 및 제한" 을 참조하십시오.
전체 텍스트 검색은 대부분의 멀티 바이트 문자 세트로 사용할 수 있습니다. 예외적으로 Unicode는
utf8
문자 집합을 사용할 수 있지만,ucs2
캐릭터 세트는 사용할 수 없습니다.ucs2
컬럼에서는FULLTEXT
인덱스를 사용할 수 없지만, 이러한 인덱스가없는ucs2
에서IN BOOLEAN MODE
검색을 수행 할 수 있습니다.utf8
관한 비고는utf8mb4
에도 적용되고ucs2
관한 비고는utf16
,utf16le
및utf32
에도 적용됩니다.중국어 나 일본어 같은 표의 문자를 사용하는 언어는 단어 구분자가 없습니다. 따라서
FULLTEXT
파서는이 같은 언어로 단어의 처음과 끝을 알 수 없습니다. 이 의미와 문제의 일부 해결 방법은 섹션 12.9 "전체 텍스트 검색 함수" 로 설명되어 있습니다.단일 테이블에서 여러 문자 세트를 사용하는 것은 지원하지만
FULLTEXT
인덱스의 모든 컬럼에서 동일한 문자 집합 및 데이터 정렬이 사용되어야합니다.MATCH()
컬럼 목록이MATCH()
가MyISAM
테이블에서IN BOOLEAN MODE
인 경우를 제외하고 테이블의 일부FULLTEXT
인덱스 정의에 포함 된 컬럼 목록에 정확히 일치해야합니다.MyISAM
테이블에서는 인덱스가 붙어 있지 않은 컬럼에서도 boolean 모드 검색을 실행할 수 있습니다. 그러나 검색이 느려질 수 있습니다.AGAINST()
의 인수는 쿼리 평가시 상수 문자열 값으로해야합니다. 예를 들어 테이블 컬럼은 행마다 다를 수 있기 때문에 제외됩니다.FULLTEXT
이외의 검색보다FULLTEXT
검색의 경우가, 인덱스 힌트에 대한 제한이 많아집니다. 섹션 13.2.9.3 "인덱스 힌트 구문" 을 참조하십시오.InnoDB
에서는 전체 텍스트 인덱스를 포함한 열을 필요로하는 모든 DML 연산자 (INSERT
,UPDATE
,DELETE
)는 트랜잭션 커밋시에 처리됩니다. 예를 들어,INSERT
연산은 삽입 된 문자열을 토큰 화 된 개별 단어에 분해됩니다. 그 후, 각각의 단어는 트랜잭션 커밋시에 전체 텍스트 인덱싱 테이블에 추가됩니다. 그 결과 전체 검색에서는 커밋 된 데이터 만 반환됩니다.