게시물 조회 시 조회 기준 컬럼에 인덱스 부여해서 처리 속도 쿼리 속도 향상
(인덱스 부여)
ALTER TABLE community_posts ADD FULLTEXT idx_title_fulltext (title);
(쿼리 실행 확인)
EXPLAIN SELECT * FROM community_posts WHERE *MATCH*(title) *AGAINST*('+dog*' IN BOOLEAN MODE);
테스트 해본 결과 성능 향상이 별로 없었습니다. 분석해본 결과 LiKE 구문으로 FULLTEXT 인덱스를 적용하는 것은 어차피 제목 전체 검색을 하게 되어서 성능향상에 아무런 도움이 되지 않았습니다.
해결 계획 추후 이 부분은 ELK를 사용해서 Elasticsreach를 적용하여 제목이나 내용검색에 적용할 예정입니다.
다른 부분에 인덱싱 적용 제목의 키워드 검색 대신 조회수와 추천수 순으로 조회하고 페이징 처리 하는 부분에서 인덱싱을 도입했습니다.
CREATE INDEX idx_views ON community_posts (views);
CREATE INDEX idx_like_count ON community_posts (like_count);
조회수에 인덱스 미적용시 (1000번째 페이지 검색)
조회수에 인덱스 적용시 (1000번째 페이지 검색)
추천수에 인덱스 미적용시 (1000번째 페이지 검색)
추천수에 인덱스 적용시 (1000번째 페이지 검색)
결과값을 보다시피 페이징 처리에서 인덱스 도입은 큰 성능 차이를 보여주었습니다. 5. 추가로 주의할 점 SQL에서 쿼리를 점검할 때 여러번의 테스트를 반복해봐야 하는데
EXPLAIN SELECT SQL_NO_CACHE
위와 같이 SQL NO CACHE 옵션을 덧붙이지 않으면 동일한 작업을 SQL이 자체적으로 캐시에 저장하고 있다가 결과값을 보여주기 때문에 테스트가 제대로 되지 않습니다. 인덱스를 부여하고 제거하는 과정을 반복해도 한번 부여되었을 때 나온 결과가 그대로 나오게 됩니다. 테스트 시에 주의해야 합니다.