Skip to content

[FEAT] 체크리스트 기반 방 필터링 조회 쿼리 최적화#88

Merged
KoungQ merged 6 commits intodevelopfrom
feat/#85/체크리스트-기반-방-필터링-조회-쿼리-최적화
Apr 3, 2026

Hidden character warning

The head ref may contain hidden characters: "feat/#85/\uccb4\ud06c\ub9ac\uc2a4\ud2b8-\uae30\ubc18-\ubc29-\ud544\ud130\ub9c1-\uc870\ud68c-\ucffc\ub9ac-\ucd5c\uc801\ud654"
Merged

[FEAT] 체크리스트 기반 방 필터링 조회 쿼리 최적화#88
KoungQ merged 6 commits intodevelopfrom
feat/#85/체크리스트-기반-방-필터링-조회-쿼리-최적화

Conversation

@KoungQ
Copy link
Copy Markdown
Member

@KoungQ KoungQ commented Apr 3, 2026

📝 Pull Request Template

📌 제목

[FEAT] 체크리스트 기반 방 필터링 조회 쿼리 최적화


📢 요약

체크리스트 조건이 포함된 방 조회에서 room_rule 중심으로 실행 계획이 잡히며 ORDER BY + LIMIT가 늦게 적용되는 문제를 개선했습니다.
체크리스트 검색 경로를 별도로 최적화해 방 테이블 주도의 조회 흐름을 유도하고, remaining 정렬에서는 커서와 정렬 기준, 인덱스 방향을 함께 맞춰 정렬/페이징 정합성을 보완했습니다.
이와 함께 응답 DTO, 커서 처리 로직, 테스트 코드를 전반적으로 수정해 변경된 조회 전략이 서비스 레이어와 테스트에 일관되게 반영되도록 정리했습니다.

🔗 연관 이슈: Resolves #이슈번호


🚀 PR 유형

해당하는 항목에 체크해주세요.

  • ✨ 새로운 기능 추가
  • 🐛 버그 수정
  • 🎨 CSS/UI 디자인 변경
  • 🔧 코드에 영향 없는 변경(오타 수정, 탭 사이즈 변경, 변수명 변경 등)
  • 🔨 코드 리팩토링
  • 📝 주석 추가 및 수정
  • 📄 문서 수정
  • 🧪 테스트 추가 또는 리팩토링
  • 🏗️ 빌드 및 패키지 매니저 수정
  • 📂 파일 또는 폴더명 수정
  • 🗑️ 파일 또는 폴더 삭제

✅ PR 체크리스트

PR이 다음 요구 사항을 충족하는지 확인해주세요.

  • 🔹 커밋 메시지 컨벤션을 준수했습니다. (Commit message convention 참고)
  • 🔹 변경 사항에 대한 테스트를 수행했습니다. (버그 수정/기능 테스트)
  • 🔹 관련 문서를 업데이트했습니다. (필요한 경우)

📜 기타

리뷰어가 알면 좋을 추가 사항을 적어주세요.

변경 배경

  • 기존 체크리스트 기반 방 조회는 roomroom_rule를 직접 결합한 구조로 동작해, 일부 정렬 시나리오에서 PostgreSQL이 비효율적인 실행 계획을 선택할 여지가 있었습니다.
  • 특히 remaining 정렬에서는 체크리스트 조건과 정렬 조건이 함께 적용되며 Sort와 늦은 LIMIT 적용이 발생할 수 있어, 최악 구간의 성능 저하 가능성이 있었습니다.

주요 변경 사항

  • 체크리스트 조건이 없는 조회는 기존 QueryDSL 경로를 유지했습니다.
  • 체크리스트 조건이 포함된 조회는 별도 최적화 경로로 분리했습니다.
  • 체크리스트 조회 경로는 JOIN LATERAL 기반 구조로 재구성해 방 테이블을 먼저 탐색하고 각 방마다 체크리스트 일치 여부를 확인하도록 변경했습니다.
  • remaining 정렬은 커서 기준을 함께 조정해 정렬 순서와 페이징 기준이 일치하도록 맞췄습니다.
  • 응답 DTO에 remaining 값을 포함하도록 변경해 커서 생성과 다음 페이지 판단이 정렬 기준과 일관되게 동작하도록 수정했습니다.
  • 정렬 기준에 맞춰 스키마 인덱스 정의도 함께 조정했습니다.

테스트 및 검증

  • 변경된 조회 경로에 맞춰 repository / service / usecase 테스트를 함께 수정했습니다.
  • 체크리스트 포함 여부, remaining 정렬 커서 처리, 응답 생성 흐름이 기존과 다르게 깨지지 않도록 검증했습니다.

참고

  • 이번 변경은 체크리스트 기반 조회 경로의 실행 계획 안정화와 정렬/커서 정합성 확보에 초점을 맞췄습니다.
  • 체크리스트가 없는 일반 조회 경로는 기존 구조를 유지해 영향 범위를 최소화했습니다.

@KoungQ KoungQ requested a review from ydking0911 April 3, 2026 11:01
@KoungQ KoungQ self-assigned this Apr 3, 2026
@KoungQ KoungQ added the feature label Apr 3, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 3, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 52c6d869-55e8-42ba-b398-d672f2d3cd11

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#85/체크리스트-기반-방-필터링-조회-쿼리-최적화

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@ydking0911 ydking0911 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@KoungQ KoungQ merged commit 2c0f3c0 into develop Apr 3, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants