프로젝트명과 설명에 대한 부분 문자열 검색 성능 이슈가 발생했습니다.
프로젝트 100만건의 데이터를 삽입하고 극한극한극한의 상황을 가정하기 위해 60초 동안 400 스레드를 통해 50회 반복 실행하여 총 20,000건의 조회 요청을 수행하도록 하였습니다.


최적화 전 성능:


사용자가 프로젝트를 검색할 때, 입력한 키워드를 기준으로 부분 문자열 검색이 수행됩니다. 이를 위해 다음과 같은 LIKE 조건이 사용되었습니다.
-- 기존 LIKE 쿼리 (성능 저하 원인)
WHERE LOWER(name) LIKE '%keyword%'
OR LOWER(description) LIKE '%keyword%'
하지만 프로젝트 데이터가 많아질수록 검색 성능이 급격히 저하되었습니다. 이를 개선하기 위해 B-Tree 인덱스를 적용했지만, EXPLAIN ANALYZE 결과에서는 여전히 Sequential Scan(Seq Scan) 이 발생하며 인덱스가 활용되지 않았습니다.
예시)
B-Tree 인덱스 적용 시 Seq Scan 실패사례
(실패 사례) B-Tree 인덱스
------------------------------------------------------------------
CREATE INDEX idx_projects_name_btree ON projects(name);
