사전 로딩

Jmnote (토론 | 기여)님의 2020년 6월 21일 (일) 23:33 판

1 개요

eager loading
eager 로딩, 이거 로딩, 이른 로딩, 사전예약 로딩, 사전 로딩, 선행 로딩, 즉시 로딩
  • 로딩시 참조해야 하는 정보를 미리 명시하는 일
  • N+1 쿼리 문제의 해결을 통해 성능 향상
  • ORM 활용시 흔히 발생할 수 있는 N+1 문제 해결 가능

2 예시: 라라벨

N+1 쿼리 상황
foreach (Book::all() as $book)
{
    echo $book->author->name;
}
Book::all()에는 author 정보가 없어서 Book 건수만큼 쿼리 추가 수행 (1+N회)
SELECT * FROM books;
SELECT * FROM authors WHERE id=1;
SELECT * FROM authors WHERE id=2;
SELECT * FROM authors WHERE id=3;
... (생략)
eager 로딩 적용
foreach (Book::with('author')->get() as $book)
{
    echo $book->author->name;
}
Book::with('author')에서 author 정보를 사용하겠다고 미리 알려줌으로써 쿼리 최소화 (2회)
SELECT * FROM books;
SELECT * FROM authors WHERE id IN (1, 2, 3, ...);

3 같이 보기

4 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}