← 질문 목록
#321깊이 0
목록 하나 읽었는데 쿼리가 백 번 나가는 이유는?
목록을 한 번 읽고, 그 안의 항목마다 연결된 것을 또 읽기 때문이다.
- 1. 앱에서 DB로: 글 100건을 달라
- 2. DB에서 앱으로: 글 100건
- 3. 앱에서 DB로: 1번 글의 글쓴이를 달라
- 4. 앱에서 DB로: 2번 글의 글쓴이를 달라. 이렇게 100번
한 번에 다 가져온 줄 알았는데 아니다. 연결된 것은 실제로 쓸 때 그때 읽어 오도록 미뤄 둔 것이다.
그래서 목록을 화면에 뿌리는 순간 100번이 더 나간다. 데이터가 적을 때는 표가 안 나고 늘어난 뒤에야 느려진다.
푸는 길은 미리 함께 읽는 것이다. 조인으로 한 번에 가져오거나, 필요한 것을 모아 in으로 한 번에 묻는다.
조인으로 가져오면 행이 부푸는 것을 조심해야 한다. 하나에 여럿이 달린 관계를 여러 개 겹쳐 조인하면 곱셈이 된다.