질문입니다. ( 스칼라서브쿼리 , 조인 속도 ) 1 8 2,634

by 남성윤 [2008.12.01 12:14:35]


요즘 많이 사용하는건데요.

코드값으로 코드에 해당하는 이름을 검색할려고할때요.

 

SELECT XX
             ,  ( SELECT 코드이름 FROM 코드테이블 WHERE 코드 = A.코드 )
        FROM XXX  A

 

이거와

SELECT XX
             ,  B.코드이름
       FROM XXX A , 코드테이블 B

뭐 인덱스나 연결고리는 있다고 가정하에..
      어떤게 대용량 처리시에 더 빠른속도를 보장하는지 궁금합니다^^

by 드래곤정 [2008.12.01 13:05:16]
상황에 따라 다르지만, 코드랑 하면 분포도가 좁다는 가정하에 첫번째꺼에 한표.
두개다 플랜 떠서 비교해 보면 답 나올듯.

by 마농 [2008.12.01 13:13:27]
일반적으로 1번이 유리하다고 합니다만.. 대용량이라면 다를 수도 있습니다.
직접 테스트 해보고 판단하시길...

by 호야 [2008.12.01 13:19:13]
저두 1번?? 꺼에 한표...
WHERE ....... AND ROWNUM=1

을 해도 더 빠르지 않을 까요?

by po1010 [2008.12.01 13:40:21]
답변 감사드립니다.^^;

by TeLl2 [2008.12.01 13:44:03]
그때의 상황이나 데이터의 양에 따라 다르겠지만
xxx테이블의 일부만 출력하는 상황이고
코드 테이블의 하나의 컬럼 데이터가 필요하다면
처음이 더 좋겠지만
코드 테이블의 컬럼을 여러개 가져 와야 되서 스칼러 서브쿼리를 중복해서
사용해야 하고 xxx테이블의 데이터를 다 가져와서 처리해야 되는 상황이라면
두번째 조인이 훨씬 좋습니다.
첫번째를 사용하는 경우는 보통
전체를 조인할 필요없는 상황
예를 들어 게시판 같이 10~20개의 데이터(일부의 데이터)만 뿌리되
다른 테이블에서 정보를 가져와야 하는 상황일때 사용하면 퍼포먼스 상의 잇점이 극대화 됩니다.

by 배고파 [2008.12.01 14:22:48]
상황에 따라 달라지겠지만..
성능으로 보면 1번 강추~~

by 이재현 [2008.12.05 10:12:22]
쪼렙 입니다 : )

전 둘다 틀렸다구 봅니다.

굳이 투표 하라고 하시면.. 2번을 선택하겠습니다.

단. A테이블에서 작업을 거의 끝내고 나서 B랑 조인을 하겠습니다.

A테이블이 백만권이고, B테이브이 천권이라면

천만 블럭 아이오가 발생하니..

A테이블 비지니스 처리후 B랑 조인거는걸 추천하겠습니다.


by 붉은낙타 [2008.12.11 14:29:22]
지금까지 알던 것과는 다르네요...허..
^_^한번 더 봐야겠네요.~!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입