Skip to content

[개발 위키] db match against 쿼리

kimhji edited this page Feb 3, 2025 · 1 revision

문제 상황

image

위와 같은 더미데이터를 100만개 추가한 상황에서, 아래 쿼리 사용 시 데이터 100만개가 모두 조회되는 문제 발생

SELECT COUNT(DISTINCT `feed`.`id`) AS `cnt`
    FROM `feed`
    INNER JOIN `rss_accept` ON `rss_accept`.`id` = `feed`.`blog_id`
    WHERE MATCH(`feed`.`title`) AGAINST ('Title 3' IN NATURAL LANGUAGE MODE);

해결 과정

아래의 문제 발생 가능성을 체크

  1. 풀 텍스트 인덱스 미적용
SHOW INDEXES FROM feed WHERE Column_name = 'title';

image

적용이 되어 있음을 확인

  1. 빈 문자열 또는 NULL 값이 포함된 데이터

    title에 null 이나 빈 문자열을 포함하는 더미데이터가 없음.

  2. NATURAL LANGUAGE MODE는 관련 데이터를 모두 불러옴?

    자연어 검색은 검색 문자열을 단어 단위(token_size)로 분리한 후, 해당 단어 중 하나라도 포함되는 행을 찾음.

    title 3을 검색하여도, title이 포함된 데이터와 3 이 포함된 데이터를 찾기 때문에 Dummy Feed Title %d 형태의 모든 더미데이터들이 탐색에 걸림

NATURAL LANGUAGE MODE 로 관련 데이터를 탐색할 시, 하나의 단어라도 포함된 경우가 모두 해당되기 때문에 더미데이터가 모두 탐색된 것.

🎋DENANNU

👮🏻 팀 규칙

*️⃣ 기술로그

공통

프로젝트 문서

트러블슈팅

김현지

프로젝트 문서

트러블슈팅

양현호

프로젝트 문서

트러블슈팅

정지혜

프로젝트 문서

트러블슈팅

한영준

프로젝트 문서

트러블슈팅

🗓️ 주간 스프린트 기록

📚 회의록

🍵 주간회고

Clone this wiki locally