인프런 커뮤니티 질문&답변

굿데이님의 프로필 이미지
굿데이

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스

join 관련 질문입니다.

작성

·

180

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

Rookiss님의 프로필 이미지
Rookiss
지식공유자

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

0

굿데이님의 프로필 이미지
굿데이
질문자

답변 감사드립니다.

굿데이님의 프로필 이미지
굿데이

작성한 질문수

질문하기