>백엔드 개발 >PHP 튜토리얼 >mysql에서 빠른 닉네임 검색 퍼지 쿼리를 수행하는 방법

mysql에서 빠른 닉네임 검색 퍼지 쿼리를 수행하는 방법

WBOY
WBOY원래의
2016-09-21 14:13:051148검색

mysql은 닉네임 검색에 대해 퍼지 쿼리를 수행합니다. 사용자가 너무 많으면 좋아요 쿼리가 매우 느려집니다. 어떻게 해결해야 할까요?

답글 내용:

mysql은 닉네임 검색에 대해 퍼지 쿼리를 수행합니다. 사용자가 너무 많으면 좋아요 쿼리가 매우 느려집니다. 어떻게 해결해야 할까요?

  1. 데이터베이스에서 이 테이블의 별명 필드에 대한 인덱스를 생성합니다

    키 `nikename`(`nikename`)

  2. 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 전체 텍스트 인덱스는 중국어 단어 분할을 지원합니다. 프로젝트에서 사용했으며 온라인에서 사용 방법에 대한 튜토리얼이 이미 있습니다.

검색엔진을 이용하여 자주 검색되는 필드를 인덱싱한 후 캐싱과 함께 사용하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.