• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

join 관련 질문입니다.

22.07.27 16:21 작성 조회수 127

0

안녕하세요. 강의 잘 듣고 있습니다.

다음과 같이 여러 테이블을 join 후 하나의 row를 뽑아내려고 하는데 성능은 어떻게 나오는지 궁금합니다.

select *

from table1

inner join table2 on table1.xxx = table2.XXX

inner join table3 on table2.XXX = table3.xxx

where table1.nnn = NNN

이렇게 되어있을 때 전체가 다 join이 된 후 where 조건을 테스트 하게 된다면 데이터가 많을 경우 성능이 떨어질 것 같아서요.

where 조건으로 먼저 필터링 한다면 금방 끝날 거 같긴한데 DB의 동작은 어떻게 처리되는건가요?

 

1. where 로 필터링이 되면서 join 되는것인지 아니면 join 완료 후 where로 필터링되는것인지 궁금합니다.

 

2. join의 횟수를 네다섯번씩 걸어도 성능에 무리가 없을까요?

 

3. 위 경우 한개의 컬럼만 찾으려면 limit을 추가해 주는게 나을까요?

1개 찾았을 때 전부 다 loop를 돌지 않고 빠져나가면 빠를거 같긴한데요.

 

확인 부탁드립니다.

답변 2

·

답변을 작성해보세요.

1

1. 강의 후반부에 나오는 [실행 계획]을 참고하시기 바랍니다. 그리고 인덱스를 어떻게 걸었는지가 아주 큰 관건입니다.
2. 성능에 좋진 않겠지만 아주 간혹 그럴 일이 생깁니다. (퀘스트, 아이템, 업적 포함 유저의 모든 정보를 긁어온다거나..)
3. 네 그렇습니다.

0

굿데이님의 프로필

굿데이

질문자

2022.07.27

답변 감사드립니다.