-
TypeOrm 0.2 - Relations 성능 이슈NestJs 2023. 2. 24. 16:55
Version: 0.2
Mysql
스키마 관계
Main(데이터 1개)
Sub 1(데이터 10개)
Sub 2(데이터 10개)
Sub 3(데이터 10개)
Sub 4(데이터 10개)
Sub 5(데이터 10개)
문제
find 옵션 중 relations를 사용하여 Sub 테이블을 질의하면 처음엔 괜찮다가 데이터가 조금만 쌓여도 느리다.
원인
relations를 사용하면 다른 테이블들의 정보를 조회할 때 Left Join을 사용한다.
예를 들어 5개의 서브 테이블에 데이터가 10개씩만 들어가 있어도
10 * 10 * 10 * 10 * 10 = 1만 개의 데이터가 조회된다.
해결방법
각각의 서브 테이블에 대해 select 결과 값을 Main 객체에 맵핑해준다.
const main = await mainRepository.findOne .... main.sub1 = await sub1Repository.find( { where: { main_id : main.id } } ) main.sub2 = await sub2Repository.find( { where: { main_id : main.id } } )또는 버전 0.3 이상으로 마이그레이션을 진행한다.
Document에 미리 고지라도 해줬으면 좋았겠지 싶다..
'NestJs' 카테고리의 다른 글
NestJs(Node) 환경에서 TossPayments Seller 코드 예제 (0) 2024.12.17 [이슈] 토스 페이먼츠 중복 결제 (1) 2024.10.30 [오답] Jest로 Axios 테스트 시 Cannot use import statement outside a module (0) 2023.03.13 Serverless + NestJS + MikroORM 조합 시 문제 (0) 2022.03.06 [공부] NestJS (0) 2021.12.20