안녕하세요. MS-SQL을 사용하고 있는 초보자입니다.
제가 현재 작은 프로젝트로 웹 게시판을 만들어 성능 개선을 진행중입니다.
게시판은
select t1.idx, t1.title, t1.user_id, t1.create_time, t1.hit_count, t1.level from (select ROW_NUMBER() over(order by root_idx desc, level asc, seq asc, idx desc) as rownum, idx, user_id, title, create_time, hit_count, root_idx, level, seq from hashtag_board where title is not null and level is not null) as t1 where t1.rownum between #{insertNum1} and #{insertNum2}
해당 쿼리를 사용하여 글을 불러온 후 페이지마다 15개의 글을 뿌려주는데요.
370만건 정도의 게시글을 가진 게시판을 JMeter를 사용하여 부하 테스트를 진행한 결과 5쓰레드 당 1초 정도의 시간이 소모됩니다. 100쓰레드면 거의 20초에 육박합니다.
멘토에게 질문한 결과 테이블을 따로 만들어 최신 글 1만개 정도를 저장하여 쿼리하라는 답변을 들었는데, 어떤식으로 진행해야 할지 감이 잡히지 않습니다.
질문1. 메인 테이블의 일부를 떼어내 서브 테이블을 어떤식으로 만들어야할까요.(또는 해당 주제와 관련된 검색 키워드)
질문2. 위의 방법을 사용하지 않고 성능 개선을 할 수 있는 방법이 있을까요.
감사합니다.