#245 [feat] 최적의 회의 시간 알고리즘 QueryDsl로 마이그레이션 #249
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✒️ 관련 이슈번호
Key Changes 🔑
To Reviewers 📢
이전 알고리즘 방식에서는 쿼리가 아래와 같이 실행되었습니다.
회의 정보를 불러오는 SELECT 쿼리 1 번 실행
회의에 참여한 총 인원을 불러오는 SELECT 쿼리 1번 실행
총 AvailableDate 데이터를 불러오는 SELECT 쿼리 1번 실행
유저 N 명당 select 쿼리 N번 실행 (N ≥ 1)
AvailableDate 데이터 M개 당 전체 TimeBlock 데이터를 불러오는 SELECT 쿼리 M번 실행 (1≤ M ≤ 7)
TimeBlock 데이터 K개 당 TimeBlockUser SELECT 쿼리 K번 실행 (1≤ K ≤ 259)
AvailableDate 당 37개의 TimeBlock이 생성될 수 있으므로 최악의 경우 37 * 7 = 259 개의 TimeBlockUser 레코드가 생긴다.
그래서 최악의 경우 1 + 1 + 1 + N + 7 + 259 , 즉 N + 266 개의 쿼리가 실행됩니다.
쿼리 수를 줄이기 위해서 알고리즘 일부를 수정했습니다.
이러한 알고리즘 방식을 통해서 쿼리가 아래와 같이 개선되었습니다.
그래서 최악의 경우 1 + 1 + 1 + 7 + 3 , 즉 13 개의 쿼리가 실행되며, 최소 7개의 쿼리가 실행됩니다.