본문 바로가기
MySql

MySQL 여러 열에서 FULLTEXT INDEXES는 어떻게 작동합니까?

by 베이스 공부 2021. 1. 30.
반응형

3 개 열에 FULLTEXT INDEX를 추가 할 때 3 개 열에 1 개의 단일 인덱스를 추가합니까, 아니면 3 개의 개별 인덱스를 추가합니까?

나는 현재 다음과 같이 FULLTEXT를 사용하고 있기 때문에 이것을 묻습니다.

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');

사용자가 검색에서 열 중 하나를 제거 할 수있는 사용자 옵션을 검색 인터페이스에 추가했습니다. 따라서 인덱스를 잃지 않고이 작업을 수행 할 수 있습니다. 여기서는 3 개 열 중 2 개만 사용합니다.

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
If (UserOptionRemoveCol == "selected") {
    SELECT * FROM myTable WHERE MATCH (col1, col2) AGAINST ('word');
} else {
    SELECT * FROM myTable WHERE MATCH (col1, col2, col3) AGAINST ('word');
}

아니면 두 열과 세 열에 새 FULLTEXT 인덱스를 만들어야합니까?

ALTER TABLE myTable ADD FULLTEXT all3colsIndex (col1,col2,col3);
ALTER TABLE myTable ADD FULLTEXT 2colsIndex (col1,col2);

 

해결 방법

 


CREATE FULLTEXT INDEX ON table_name (column_name1 [...], column_name2 [...]) ...

이 정보가 주어지면 3 개 열에 걸쳐 단일 색인 을 생성한다고 가정합니다. 또한 복합 인덱스와 관련하여 왼쪽에서 오른쪽 규칙에 따라 작동한다고 가정합니다 (다음 문에 대한 실행 계획을 확인하여이를 확인합니다). 따라서 (col1, col2, col3) 에 대한 복합 색인을 사용하려면 순서대로 선택해야합니다 ( SELECT col1, col2 ... ). col2 를 호출하면 색인을 사용하지 않습니다.

 

참조 페이지 https://stackoverflow.com/questions/12361804

 

 

반응형

댓글