Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: #146-answerCount 계산을 위한 SQL문 수정 #147

Merged
merged 1 commit into from
May 4, 2024

Conversation

BlueBerrySoda
Copy link

@BlueBerrySoda BlueBerrySoda commented May 4, 2024

Overview

answerCount 계산을 위한 SQL 쿼리를 수정했습니다.

Related Issue

Issue Number : #146

Task Details

기존에 Map 자료형으로 별첨하던 answerCount를 각 question에서 해당 ID를 가진 answer count를 계산하는 것으로 구현했습니다.
N+1문제 또한 해결하였습니다.

해결 과정

내가 원하는 결과 : list 조건에 맞는 각 question의 간단한 정보들과 해당 question의 answer 수를 하나의 DTO에 담아서 반환해주는 것

초기에 생각한 해결 방법들

  1. QUESTIONS 테이블에 answerCount 추가 -> 가장 직관적인 해결방법. 그러나 매번 댓글 올릴때마다 QUESTION 찾아서 answerCount update 요청하면 결국 그것도 서버 부담이라 생각해서 중단하였다..

  2. ANSWERS 와 QUESTIONS 양방향 참조 관계 구성 -> 이렇게 하면 Question의 List< Answer >를 통해 댓글 수를 알 수 있다. 그러나 NoSQL이나 postgreSQL에서 원할하게 동작하고 MySQL은 오류가 있다고 해서 중단하였다.

  3. SubQuery 사용으로 추가 검색 -> 이렇게 하면 2번으로 검색 가능. 그러나 Projection.Constructor 주입에 문제가 발생해서 별도 Map 자료형으로 첨부하는 형식으로 반환하였다.

  4. (최종) QUESTIONS 테이블에 ANSWERS LeftJoin으로 찾기 -> 원래도 하고 싶었는데 N+1으로 자꾸 ANSWERS 테이블을 추가 조회 혹은 반환도 이상해지는 문제가 있어서 위의 3번으로 했었다. 그러다가 생각난 것이 DISTINCT를 사용한 중복값 제거와 GROUP BY를 통한 그룹화였다. 이거 해주니까 그냥 한번에 깔끔하게 값을 반환해주었다.

image

Test Scope & Checklist (Optional)

  • api/question/list Endpoint에서 answerCount 포함된 Response가 반환되는가

Review Requirements

@BlueBerrySoda BlueBerrySoda added the 🔧 refactor Good for newcomers label May 4, 2024
@BlueBerrySoda BlueBerrySoda requested a review from mclub4 May 4, 2024 13:36
@BlueBerrySoda BlueBerrySoda merged commit 9c8bb80 into develop-back May 4, 2024
@mclub4
Copy link

mclub4 commented May 4, 2024

이거 혹시 어케 개선한건지 좀 자세히 써줄 수 있나요??

@BlueBerrySoda BlueBerrySoda self-assigned this May 4, 2024
@BlueBerrySoda BlueBerrySoda added the 🔒 BE backend task label May 5, 2024
@ji-hunc ji-hunc deleted the refactor/be/#146-answer-count branch May 27, 2024 14:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔒 BE backend task 🔧 refactor Good for newcomers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants