NullAble
408
2021-10-14 12:00:26
5
144

2개 이상의 One to Many 관계의 테이블을 여러번 query를 날리는게 좋을까요 조인을 연속으로 하는게 좋을까요?


저의 생각은 DB의 성능이 워낙 좋다보니 

여러번 쿼리를 날려 DB의 성능을 보존하면서

DB의 능력을 최대한 활용하는 쪽이 맞다고 보나 


다른 시각에서는 다 조인해서 가지고 오는게 더 낫지 않냐고 하는데요...

이에대한 제 생각은 조인 자체가 ansi로 한다고 해도 조인자체가 DB에 부하를 준다고 알고 있어 개인적으로 전자에 무게가 실립니다!


뭐가 더 나을까요?

0
  • 답변 5

  • 호이구름이
    60
    2021-10-14 12:55:34

    join이 더 좋은 방법 같습니다.. 여러번 호출시 DB connection time도 같이 늘어나겠지요.

    여러번 호출보다 차라리 union이 더 빠를수도 있겠네요.

    굳이 여러번 호출해야한다면 Stored Procedure를 사용하는 방법도 있습니다.

  • 오후
    3k
    2021-10-14 13:18:04

    데이터자체가 방대한상태라면야 was 에서 판별하여 대상숫자를 줄여가며 가져오는것도 한방법일수는있겟지만 데이터 일관성유지를 위해서라도 JOIN하여 한번에가져오는게 좋습니다.

  • Skarmory
    117
    2021-10-14 13:28:45

    가져온 데이터에서 oneToMany데이터를 무조건 다쓴다 그럼 조인으로 가져오고 아니면 굳이 매번 조인을 다해야할까요


  • yeori
    2k
    2021-10-14 13:36:40

    그때그때 다릅니다.

    조인으로 한방에 가져오는게 이상적이긴한데 각자 처한 현실에 따라서 피해야 하거나 불가능한 경우도 있는듯합니다.

    각자 생각은 다르겠지만 일단 손쉽고 빠르게 구현해놓고(일단 정상 작동해야함) 성능에 문제가 있으면 개선하는 방식을 선호합니다.

    인덱스만 잘 타면 조인을 해도 부하기 크지 않습니다. 조인이 잘 안되거나 인덱스를 안타고 풀스캔을 하면.. 조인을 포기하고 일단 돌아가게는 해야겠지만.. 이거는 미봉책이고 어떻게든 수정을 해야 합니다.

    조인 몇번 해서 깔끔하게 돌아가면 좋지만 세상이 아릅답진 않습니다(그래도 이상을 향해서...)

  • 제타건담
    7k
    2021-10-14 13:58:43

    조인을 하되..그 과정에서 발생한 SQL문을 log를 출력해서..

    원하는 방향의 join으로 진행하는지 그렇지 않은지를 확인할 필요가 있습니다..

    만약 원하는 방향으로 잘 되지 않으면 hint를 줘서 해당 방향으로 유도해보고..

    이리저리해도 답이 안나오면 여러번 날려보고..

    여러번 날려도 답이 안나오면 native sql로 직접 sql문 작성해서 날려야겠죠..

  • 로그인을 하시면 답변을 등록할 수 있습니다.