Pagination 2

COUNT와 Pagination, 필요없을 수 있습니다

데이터의 갯수가 정말 많을 때에 Pagination을 사용해서 데이터를 조회하곤합니다. 화면에 한 번에 조회할 수 있는 데이터의 갯수는 한정적이기 때문입니다. 아래 사진의 히트맵에서도 정상 트랜잭션의 갯수는 51402개, 에러 트랜잭션의 갯수는 305개입니다. 이러한 트랜잭션 데이터를 히트맵이 아니라 LIST로 표현할 때에는 Pagination을 적용한 화면으로 설계를 하곤합니다. 하지만 어떤 데이터가 가장 중요할까? 또는 첫 번째 페이지만으로 충분한 인사이트를 줄 수 있지 않을까?라고 접근하면 생각보다 쉽게 문제를 성능문제를 풀 수도 있습니다. 트랜잭션 데이터를 조회할 때의 주요 관심사는 주로 2가지입니다. 1. 정상이지만 느린 트랜잭션 2. 에러 트랜잭션 이 두가지 경우는 각각 아래의 필터 조건을 사..

DEV/INSIGHT 2023.09.24

Join과 Pagination 함께 사용할 때 Count 쿼리 최적화

JOIN을 해서 pagination까지 제공해야하는 경우가 있습니다. @Repository public interface MemberJpaRepository extends JpaRepository { @Query(value = "select m from Member m left join m.team t where t.id = :teamId") Page findPageByName(String name, Pageable pageable); } 그런데 이 때 JOIN을 사용하는 COUNT 쿼리가 발생할 수 있습니다. select count(m) from Member m left join m.team t left outer join은 COUNT 결과 갯수에 영향을 주지 않음에도, 이미 충분히 무거운 count ..

DEV/Spring Data JPA 2023.09.24