특정 Row의 개수를 세기 위해서는 위의 2가지 방법 정도가 있을 것 같은데
둘중에 무엇이 더 빠른지 궁금해서 직접 테스트 해보게 됐다.
fun testCount(): Long =
jpaQueryFactory
.select(roadNumberEntity.count())
.from(roadNumberEntity)
.where(roadNumberEntity.isRepresent.eq(true))
.fetchOne()!!
아래는 count 쿼리로 조회했을 때의 성능이다. Row 약 20만개 넣어놓고 테스트 진행
처음에는 약 221ms 정도 소요되고 그후에는 1차캐시에서 가져오기 때문에 120ms 언저리로 나온다.
DB에서 최적화를 해줘서 반환하기 때문
fun testSize(): Int =
jpaQueryFactory
.selectFrom(roadNumberEntity)
.where(roadNumberEntity.isRepresent.eq(true))
.fetch()
.size
아래는 fetch후 size로 조회했을 때의 성능이다. Row 약 20만개 넣어놓고 테스트 진행
데이터가 많으면 많을수록 성능이 현저히 떨어진다.