Skip to content

Commit f0f4fba

Browse files
committed
[feat] 인덱스를 통한 조회로 개수 count
1. 인덱스 생성후 created at으로 쿼리 타기 2. count(h) 보다 count *가 조회성능이 더 빠르기 때문에 변경 ( B tree 요소까지 접근 안해도 인덱스만 조회하면 되서 빠른거다 )
1 parent a23290d commit f0f4fba

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/main/java/com/moddy/server/domain/hair_model_application/repository/HairModelApplicationJpaRepository.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44
import org.springframework.data.domain.Page;
55
import org.springframework.data.domain.Pageable;
66
import org.springframework.data.jpa.repository.JpaRepository;
7+
import org.springframework.data.jpa.repository.Query;
8+
import org.springframework.data.repository.query.Param;
79
import org.springframework.stereotype.Repository;
810

11+
import java.time.LocalDateTime;
912
import java.util.List;
1013
import java.util.Optional;
1114

@@ -19,4 +22,7 @@ public interface HairModelApplicationJpaRepository extends JpaRepository<HairMod
1922

2023
List<HairModelApplication> findAllByModelId(Long modelId);
2124

25+
@Query("SELECT COUNT(*) FROM HairModelApplication h WHERE h.createdAt >= :startDate AND h.createdAt < :endDate")
26+
long countNonExpiredApplications(@Param("startDate") LocalDateTime startDate, @Param("endDate") LocalDateTime endDate);
27+
2228
}

src/main/java/com/moddy/server/service/application/HairModelApplicationRetrieveService.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.springframework.stereotype.Service;
2929
import org.springframework.transaction.annotation.Transactional;
3030

31+
import java.time.LocalDate;
32+
import java.time.LocalDateTime;
3133
import java.util.Comparator;
3234
import java.util.List;
3335
import java.util.stream.Collectors;
@@ -138,10 +140,7 @@ private Page<HairModelApplication> findApplicationsByPaging(final int page, fina
138140
PageRequest pageRequest = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.DESC, "createdAt"));
139141
Page<HairModelApplication> applicationPage = hairModelApplicationJpaRepository.findAll(pageRequest);
140142

141-
long nonExpiredCount = hairModelApplicationJpaRepository.findAll()
142-
.stream()
143-
.filter(application -> !application.isExpired())
144-
.count();
143+
long nonExpiredCount = hairModelApplicationJpaRepository.countNonExpiredApplications(LocalDate.now().minusDays(13).atStartOfDay(), LocalDate.now().plusDays(1).atStartOfDay());
145144

146145
Page<HairModelApplication> nonExpiredApplications = applicationPage
147146
.stream()

0 commit comments

Comments
 (0)