오봉이와 함께하는 개발 블로그

Querydsl - 페이징 본문

BE/JPA

Querydsl - 페이징

오봉봉이 2022. 9. 16. 01:04
728x90

페이징

조회 건수 제한

@Test
void paging1() {
    List<Member> result = queryFactory
            .selectFrom(member)
            .orderBy(member.username.desc())
            .offset(1) // 0부터 시작(zero index)
            .limit(2) // 최대 2건 조회
            .fetch();
    assertThat(result.size()).isEqualTo(2);
}

전체 조회 수가 필요하면?

@Test
void paging2() {
    QueryResults<Member> queryResults = queryFactory
            .selectFrom(member)
            .orderBy(member.username.desc())
            .offset(1) // 0부터 시작(zero index)
            .limit(2) // 최대 2건 조회
            .fetchResults();
    assertThat(queryResults.getTotal()).isEqualTo(4);
    assertThat(queryResults.getLimit()).isEqualTo(2);
    assertThat(queryResults.getOffset()).isEqualTo(1);
    assertThat(queryResults.getResults().size()).isEqualTo(2); // queryResults.getResults(는 contents가 나옴
}

count 쿼리가 실행되니 성능상 주의하자.

실무에서 페이징 쿼리를 작성할 때, 데이터를 조회하는 쿼리는 여러 테이블을 조인해야 하지만, count 쿼리는 조인이 필요 없는 경우도 있다.
그런데 이렇게 자동화된 count 쿼리는 원본 쿼리와 같이 모두 조인을 해버리기 때문에 성능이 안나올 수 있다.
count 쿼리에 조인이 필요없는 성능 최적화가 필요하다면, count 전용 쿼리를 별도로 작성해야 한다.

인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90

'BE > JPA' 카테고리의 다른 글

Querydsl - 조인 (기본 조인)  (0) 2022.09.17
Querydsl - 집합  (0) 2022.09.16
Querydsl - 정렬  (0) 2022.09.16
Querydsl - 결과 조회  (0) 2022.09.16
Querydsl - 검색 조건 쿼리  (0) 2022.09.16
Comments