목록2025/01 (2)
나의 개발일지
일정 목록을 조회하는 API를 구현함에 있어서 정말 복잡하게 테이블을 조회해야하는 일이 생겼다. 전체 ERD 중 일정 생성에 연관된 테이블은 다음과 같다. 일정 목록 조회를 위해서는 다음과 같은 조회 쿼리가 필요하다. 그에 대한 이유도 각각 아래 서술한 것과 같다. 1. 로그인한 사용자가 만든 일정 조회 -> 반려동물이 없는 일정도 조회하기 위함 2. 로그인한 사용자가 돌보미로 등록된 반려동물의 일정 조회 3. 로그인한 사용자가 소유한 반려동물의 일정 조회 -> 자신의 반려동물이지만 돌보미로 등록된 다른 사용자가 만든 일정 정보 획득 이렇게 조회를 한 후 중복을 제거하면 관련된 모든 일정에 대해 조회가 가능하다. 시도해봤던 로직 1. 로그인한 사용자가 만든 일정 + 로그인한 사용자가 돌보미로 ..
DB에서 정말 빈번하게 발생하는 N + 1문제를 인식하고 (드디어) 이해를 해서 포스팅을 해보려고 한다. N + 1 문제란 ?ORM (Object Relational Mapping)을 사용할 때 발생할 수 있는 비효율적인 데이터베이스 쿼리 문제를 말한다.연관관계에 있는 엔티티에서 하나의 엔티티를 조회할 때 관련된 엔티티를 조회하기 위해 추가적인 쿼리가 반복적으로 실행되는 상황을 말한다. 연관관계 (1 : N, N : 1) 의 엔티티를 조회할 때 조회된 데이터 갯수 (n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 즉, 1번의 쿼리를 날렸을 때 의도하지 않은 N번의 쿼리가 추가적으로 실행되는 것이다. 처음에 오해한 생각 : 내가 로그인이 필요한 모든 메소드에서 MemberAd..