쿼리 성능 질문 입니다. 0 7 2,176

by 비니 [SQL Query] [2014.04.22 19:14:09]


테이블이 2~3개 또는 더 있을수도 있습니다.

모든 테이블은 같은 키값이 pk로 잡혀 있습니다.

A, B, C 라는 테이블이 있고

각각의 테이블은 a라는 컬럼이 pk가 되는거죠.

각각의 테이블은 pk는 같지만 데이터는 다를 수 있습니다.

예로 A라는 테이블은 데이터 건수가 100개 이지만 B 테이블은 50개, C테이블은 70개

A라는 테이블이 3개의 테이블중 기본 테이블 입니다 .A에는 데이터가 무조건 있고, B, C는 위처럼 데이터 가

있을 수도 있고 없을 수도 있습니다.

그렇다면

각 테이블에서 데이터를 뽑아올 경우

3개의 테이블을 모두 outer 조인으로 select를 해서 데이터를 뽑아오는 것이 유리한지

아니면 각각 테이블마다 어차피 검색 조건이 같으므로 각각 원하는 데이터를 조회하는게

유리한지 궁금해서 올립니다.

제 생각에는 어차피 조인을 해도 A B C테이블이 pk이자 검색조건이 같아서 조인하는것과

따로 검색하는 것이 큰 차이는 없을 것 같습니다만.

 

by DarkBee [2014.04.22 19:23:38]

별로 고민 안하셔도 될꺼 같습니다.


by 비니 [2014.04.22 19:52:35]

그말씀은 즉? 둘다 같다? 인지요? ^^


by 마농 [2014.04.22 21:05:27]

조인하는것과 각각조회하는것이 뭘 의미할까요?

서로 다른 것을 말하는 듯 한데요.

다른걸로 성능비교가 되나요?

성능 비교는 같은걸 다르게 구현했을 때 하는거죠.

아예 다른걸 어찌 성능비교를 하나요?


by 비니 [2014.04.23 10:09:16]

아 그런가요? 마농님.

흠. 전 단지 두개 세개 테이블에서 데이터를 가져올때

테이블 조인해서 A테이블의 컬럼 a와

B테이블 컬럼 b, C테이블 컬럼 c를 가져오는거랑

따로 조회해서  A.a, B.b, C.c, 를 가져오는게 둘이 효율상 무엇이 나은지 궁금했거든요.

조회 조건은 3개의 테이블이 pk가 같아서  A left outer join B , A left outer join C를 해서

가져오는게 효율상 따로 조회해서 가져오는거보다 나은지가 궁금했거든요.

뽑아오는 데이터는 동일해서 궁금했었습니다.

 


by 비니 [2014.04.23 10:15:04]

쿼리로 보자면  아래 1번과 2번 방식입니다.

1.

select A.a , B.b
from A left outer join B on A.p = B.p
where A.p='value';

2

select a from A where p='value';

select b from B where p='value';


by 마농 [2014.04.23 10:25:09]

어차피 대량 자료가 아닌 유니크한 자료 검색이라면?

차이가 난다 한들 체감할수 없습니다.

일단 억지로라도 비교해 보자면...

SQL 을 Call 하는 횟수 차이가 성능차이로 이어진다고 볼 수 있습니다.

쿼리를 두번 수행하는 비용보다는 한번 수행하는 비용이 작겠지요.


by 비니 [2014.04.23 10:41:53]

아 네 ..답변 감사 드립니다.

데이터가 테이블에 따라서 200~300만건 정도 있는 테이블이 기본이 되고

나머지는 조회 하는 테이블은 저렇게 많지 않습니다.

답변주신데로 모든 테이블이 유니크한 값으로 조회를 하는지라

질문을 올린거였습니다.

어차피 200~300만건이라도 유니크한 pk를 오로지 검색조건에만 사용하는거여서

.. ...

음 쿼리를 두번하는것 보단 조인으로 한번하는게 약간은 낫다 이거네요.

허나? 굳이 pk 를 이용한 검색인지라 큰 차이는 없을 거라는 뜻으로 이해하겟습니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입