목적
프로젝트에서 지역기반 검색을 위해 DB조회를 하기 위해서는 해당 쿼리를 활용하게 되는데,
SELECT * FROM sitterdb.petsitter WHERE UPPER(sitterWorkAdr) LIKE '%서울%' AND delFlag = false ORDER BY id DESC;
# 서울 이라는 단어로 지역검색시
게시물의 글이 많아질 경우 해당 키워드를 찾기 위해 많은 시간이 걸릴 것이라는 생각을 했다.
그래서 프로젝트의 주요 기능중 하나인 검색 기능에서 indexing을 통해 데이터 성능개선 방향을 고려해 보기로 했다.
indexing이란?
인덱스를 성정하면 해당 컬럼들의 값을 해시 맵 형태로 메모리에 저장해 두고 검색할 때 메모리 검색을 먼저 하고 해당하는 행을 찾아 반환해 준다.
하지만, 인덱스를 생성하는데 비용이 들고, 데이터 수정, 추가, 삭제에 대한 처리 속도가 낮아진다.
해당 장단점을 잘 고려해서 적절한 부분에 index를 사용해주어야 할 거 같다.
테스트
속도 개선을 위해 INDEX 기능 적용
CREATE INDEX idx_sitter_work_adr ON sitterdb.petsitter(sitterWorkAdr);
- 10개의 게시물 검색 결과
0.00099875 -> 0.00077650
- 1000개의 게시물 검색 결과
0.01801475 -> 0.00489175
펫시터의 게시글이 많지 않을 때는 index를 사용하는 게 크게 차이가 없지만 , 게시글이 많아질수록 index 성능을 발휘하는 것을 확인할 수 있었다.
펫시터 데이터는 프로젝트에서 상당히 많은 데이터를 가지고 있을 것이다.
해당 데이터의 검색 기능에서 적절한 인덱스를 구성하는 것으로, 눈에 띄게 성능 개선할 수 있을 것이다.
'프로젝트 > Springboot-Petsitter' 카테고리의 다른 글
[Project - Petsitter] Github Actions CI/CD 파이프라인 구축 (1) | 2024.11.18 |
---|---|
[Project - Petsitter] 카카오톡 회원가입/ 로그인 (0) | 2024.06.15 |
[Project - Petsitter] 회원가입/ 로그인 (1) | 2024.06.15 |
[Project - Petsitter] ERD작성 (0) | 2024.06.15 |
[Project - Petsitter] 요구사항 명세서 작성 (0) | 2024.06.15 |