오봉이와 함께하는 개발 블로그
Querydsl - 스프링 데이터 페이징 활용 2 (CountQuery 최적화) 본문
728x90
스프링 데이터 페이징 활용1 - CountQuery 최적화
- 스프링 데이터 라이브러리가 제공
- count 쿼리가 생략 가능한 경우 생략해서 처리
- 페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈보다 작을 때
- 마지막 페이지 일 때 (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())
);
// countQuery.fetchCount(); // 이 코드를 실행해야 쿼리가 날라간다
return PageableExecutionUtils.getPage(content, pageable, () -> countQuery.fetchCount());
return PageableExecutionUtils.getPage(content, pageable, countQuery::fetchCount); // lambda식
반환 값을 위 코드로 작성하면 글 최상단에 적힌 조건일 때는 count 쿼리를 생략할 수 있기 때문에 성능 최적화가 된다.
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90
'BE > JPA' 카테고리의 다른 글
Querydsl - 인터페이스 지원 (QuerydslPredicateExecutor) (0) | 2022.09.20 |
---|---|
Querydsl - 스프링 데이터 페이징 활용 3 (컨트롤러 개발) (1) | 2022.09.20 |
Querydsl - 스프링 데이터 페이징 활용 1 (Querydsl 페이징 연동) (0) | 2022.09.20 |
Querydsl - 스프링 데이터 JPA 사용자 정의 리포지토리 (0) | 2022.09.20 |
Querydsl - 스프링 데이터 JPA 리포지토리로 변경 (1) | 2022.09.20 |
Comments