집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 InnoDB 테이블에서 전체 텍스트와 유사한 검색을 어떻게 달성할 수 있습니까?
InnoDB에서 전체 텍스트와 유사한 기능을 사용하여 MySQL 데이터 검색
InnoDB 테이블에서 문자열 검색에 "LIKE"를 사용하는 기존 접근 방식은 문제가 있습니다. 성능 제한 및 각 검색어를 개별적으로 확인해야 하는 필요성을 방지합니다. 검색 기능을 강화하려면 InnoDB 테이블에서 전체 텍스트 검색을 모방하는 솔루션이 바람직합니다.
해결책: 인덱싱을 위해 별도의 MyISAM 테이블 활용
이 접근 방식에는 별도의 테이블을 생성하는 작업이 포함됩니다. InnoDB 테이블을 미러링하는 MyISAM 테이블. MyISAM 테이블에는 "FULLTEXT" 키워드로 인덱싱된 추가 열이 포함되어 있습니다. 이 MyISAM 테이블을 행 데이터로 채워서 전체 텍스트와 유사한 빠른 검색 기능을 지원하는 인덱스를 효과적으로 생성합니다.
구현
다음 예를 고려하세요.
-- InnoDB tables CREATE TABLE users (id INT, name VARCHAR(255), PRIMARY KEY (id)); CREATE TABLE forums (id INT, name VARCHAR(255), PRIMARY KEY (id)); CREATE TABLE threads (id INT, subject VARCHAR(255), user_id INT, forum_id INT, PRIMARY KEY (id)); -- MyISAM fulltext table CREATE TABLE threads_ft (id INT, subject VARCHAR(255), FULLTEXT(subject), PRIMARY KEY (id));
동기화 중 데이터
MyISAM 전체 텍스트 테이블을 최신 상태로 유지하려면 트리거, 일괄 업데이트 또는 기타 적절한 메커니즘을 사용할 수 있습니다.
검색 쿼리 수행
이제 전문과 같은 검색이 가능해졌습니다 쿼리:
-- Stored procedure for searching CREATE PROCEDURE ft_search_threads(IN p_search VARCHAR(255)) BEGIN SELECT * FROM threads_ft WHERE MATCH(subject) AGAINST (p_search IN BOOLEAN MODE) ORDER BY RANK() DESC; END; -- Example query CALL ft_search_threads('keyword1 keyword2 keyword3');
이점
이 접근 방식은 다음과 같은 이점을 제공합니다.
위 내용은 MySQL의 InnoDB 테이블에서 전체 텍스트와 유사한 검색을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!