mysql은 닉네임 검색에 대해 퍼지 쿼리를 수행합니다. 사용자가 너무 많으면 좋아요 쿼리가 매우 느려집니다. 어떻게 해결해야 할까요?
mysql은 닉네임 검색에 대해 퍼지 쿼리를 수행합니다. 사용자가 너무 많으면 좋아요 쿼리가 매우 느려집니다. 어떻게 해결해야 할까요?
데이터베이스에서 이 테이블의 별명 필드에 대한 인덱스를 생성합니다
키 `nikename`(`nikename`)
SQL 문을 사용한 전체 텍스트 인덱스
ALTER TABLE `user` ADD FULLTEXT `fidx_user_nikename`(`nickname`)
그런 다음 다음 방법을 사용하여 쿼리
<code>SELECT * FROM \`user\` WHERE MATCH (nickname)AGAINST ('xxx')</code>
%name%과 같다면 제가 아는 범위에서는 방법이 없습니다. 앞에 %가 없으면 인덱스를 만들거나 LOCATE 함수를 사용해 볼 수는 있지만 효과가 없을 것 같습니다.
Instr은 어디에 있나요?
퍼지 검색의 경우 단어 분할을 사용하세요. 스핑크스 coreseek 또는 xunsearch(Xunsou)
mysql 버전이 5.7보다 큰 경우 내장된 ngram 전체 텍스트 인덱스는 중국어 단어 분할을 지원합니다. 프로젝트에서 사용했으며 온라인에서 사용 방법에 대한 튜토리얼이 이미 있습니다.
검색엔진을 이용하여 자주 검색되는 필드를 인덱싱한 후 캐싱과 함께 사용하세요