안녕하세요 현재 mysql을 이용하여 서비스를 운영하려고 합니다.
그런데 user의 경우 닉네임에 공백이 들어갈 수 있도록 하였는데 혹시 이런 경우에 가장 좋은 방법이 있을까요??
만약 닉네임이 'Ed Sheeran`일 경우 'ds'를 검색해도 검색이 되게 하려고 합니다.
현재는
... where nickname like '%keyword%'
으로 사용 중인데 이렇게 하면 어차피 인덱스가 타지 않아
... where REPLACE(nickname,' ','') like '%keyword%'
으로 변경하여 사용하려고 합니다.
더 좋은 방법이 있을까 싶어 검색해보아도 거의 동일한 방법인것 같지만 혹시나해서 질문을 드립니다.
full_textIndex를 사용하려 했으나 검색어가 길어질 경우 너무 느려지고, 1글자 검색이 가능은 하지만 인덱스 크기가 너무 커질것이 우려되어 like 검색어로 변경하게 되었습니다.
또한 추가로 'ed'라는 키워드로 검색 시 정확도 순으로 출력을 하고 싶습니다.
검색 시 'ed', 'ed sh', 'Ed Sheeran', 'asd ed' 과 같은 순서로 출력을 하고 싶은데
CASE WHEN name = 'ed' THEN 0 WHEN name like 'ed%' THEN 2 ...
와 같은 쿼리는 속도가 생각보다 나오지 않는데
조금 더 빠른 방법이 있을지 궁금합니다.
name에는 인덱스가 걸려있습니다.
추가로 필요한 사항이 있으시다면 댓글 남겨주시면 바로 답글 달도록 하겠습니다!
감사합니다.