TIL(Today I Learned)
2월 13일(수)
공부한 내용을 제 언어로 빠르게 정리한 내용이라서 잘못된 내용이 있을 수 있습니다.
서버 스터디
- n+1 문제
- 상품 테이블과 상품 옵션 테이블이 있다고 가정하자.
- 그리고 상품 목록 페이지에서 상품을 나열하고 상품에 포함되는 상품 옵션을 동시에 보여준다고 하자.
- 상품 테이블에서 상품 목록을 가져오는 쿼리를 1개 실행해야하고,
- 각각의 상품 ID를 통해 해당하는 상품 옵션을 가져오는 쿼리를 N개 실행해야한다. (상품이 n개 이므로)
- 이러한 문제를 n+1 문제라고 한다.
- 즉 불필요하게 쿼리를 많이 실행해서 성능 문제를 발생하는 것을 n+1 문제라고 한다.
- 쿼리를 최적화 하거나(하나의 쿼리로 필요한 정보를 가져오도록), JOIN 을 활용하여 이를 해결할 수 있다.
- Lazy Loading vs Eager Loading
- Lazy Loading은 필요할때 로드하는 것
- Eager Loading은 미리 로드하는 것