데이터베이스 쿼리에서는 검색에 가장 적합한 쿼리를 선택해야 하는 딜레마에 직면합니다. 여러 열의 특정 키워드를 기반으로 한 행. 이 질문은 두 가지 접근 방식을 비교합니다.
이 쿼리는 전체 텍스트 인덱싱을 사용하여 "foo" 및 "bar"라는 키워드가 포함된 문서를 검색합니다. 지정된 열 "foo_desc" 및 "bar_desc" MySQL 버전 5.6 이상에서는 InnoDB 테이블에 대해 MATCH AGAINST가 지원됩니다.
이 쿼리는 두 열의 값을 연결하고 LIKE를 사용하여 수행합니다. 결과 내에서 "foo" 및 "bar"에 대한 하위 문자열 검색 string.
MATCH AGAINST는 전체 텍스트 인덱스를 활용하여 키워드를 효율적으로 검색하는 MyISAM 테이블에서 뛰어난 성능을 보여줍니다. 반면에 LIKE는 전체 테이블 스캔을 수행하여 각 행에서 키워드를 검색하므로 대규모 데이터 세트의 경우 시간이 많이 걸릴 수 있습니다.
LIKE는 열에 직접 적용되는 경우(함수 결과 아님), 검색 패턴이 열의 시작 부분과 일치하는 경우, 열이 인덱싱되는 경우에만 유효합니다. 그렇지 않으면 기본적으로 전체 테이블 스캔이 수행되므로 대규모 데이터 세트에는 실용적이지 않습니다.
MySQL에서 MATCH AGAINST의 한 가지 제한 사항은 다음과 같습니다. 전체 단어만 일치합니다. 따라서 "bla"를 검색하면 "blah"가 포함된 열과 일치하지 않지만 "bla*"를 검색하면 검색됩니다.
성능 고려 사항과 LIKE의 제한 사항을 기반으로 MATCH AGAINST는 여러 열의 키워드에 대한 대규모 데이터 세트를 검색할 때 선호되는 선택입니다. 전체 텍스트 인덱싱의 효율성을 활용하여 빠르고 정확한 결과를 제공합니다.
위 내용은 MATCH AGAINST 또는 LIKE: MySQL의 다중 열 키워드 검색에 어느 것이 더 낫습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!