SpringDataJPA - CountQuery 최적화

박민수·2023년 11월 14일
1

JPA

목록 보기
10/24
post-thumbnail

CountQuery 최적화

스프링 데이터는 다음과 같은 상황에서 count 쿼리를 생략한다.

  1. 페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때
  2. 마지막 페이지 일 때 (offset + 컨텐츠 사이즈를 더해서 전체 사이즈 구함)

PageableExecutionUtils.getPage()로 최적화

JPAQuery<Member> countQuery = queryFactory
    .select(member)
    .from(member)
    .leftJoin(member.team, team)
    .where(usernameEq(condition.getUsername()),
        teamNameEq(condition.getTeamName()),
        ageGoe(condition.getAgeGoe()),
        ageLoe(condition.getAgeLoe()));
        
    //return new PageImpl<>(content, pageable, total);
    return PageableExecutionUtils.getPage(content, pageable, countQuery::fetchCount);

참조
https://www.inflearn.com/course/querydsl-%EC%8B%A4%EC%A0%84/dashboard

profile
안녕하세요 백엔드 개발자입니다.

0개의 댓글