==========================================================================
SELECT SINGLE d~signatur INTO signatur
FROM zivhd AS a INNER JOIN zpivdt AS b
ON b~invoice_no = a~tag_no
INNER JOIN zt1_rdt AS c
ON c~objectid = b~po_no
INNER JOIN zt0_pwd AS d
ON d~uname = c~empno
WHERE a~invoice = p_in.
=============================================================================
SELECT SINGLE b~po_no INTO po_no1
FROM zivhd AS a INNER JOIN zpivdt AS b
ON b~invoice_no = a~tag_no
WHERE a~invoice = p_in.
SELECT SINGLE empno INTO empno1
FROM zt1_rdt WHERE objectid = po_no1.
SELECT SINGLE signatur INTO signatur
FROM zt0_pwd WHERE uname = empno1.
===========================================================================
위 두가지 select 문자에 inner join를 사용했는데
두가지 소스중에 어느것이 더 효율적인 소스인지 알고 싶습니다.
댓글 7
-
activeman
2008.04.11 02:16
-
다급
2008.04.11 02:19
select문은 한번만 쓰는게 좋을 듯 합니다. db에 여러번 접근할수록 퍼포먼스는 떨어지니까...근데 single은 안쓰는 추세라 하던데...주워들은것만 있어서..하핫..^^; -
아밥입문자
2008.04.11 18:25
처음에 쓰신게 더 효율적인거 같습니다... 코딩은 되도록 간단히 보기좋케 하는게 조차나여~~ㅎㅎ
-
로미오
2008.04.11 18:58
답변 감사합니다. inner join를 여러번 쓰는 것은 퍼포먼스를 떨어진다고 해서 정확하게 알고 싶어 질문을 드린것입니다.
select문에 여러번 사용하여 db에 접속하면 퍼포먼스가 떨어진다고 하는데 소스상에는 select를
여러번 사용해도 실제 접속하는 db는 다 틀린데 그러다보면 결국 각 db별로 한번씩 접속하는 것인데
이렇게 해도 포퍼먼스가 떨어지는가요? 의문이 들어 제 질문을 드립니다. -
activeman
2008.04.11 19:27
"select문에 여러번 사용하여 db에 접속하면 퍼포먼스가 떨어진다고 하는데 소스상에는 select를 여러번 사용해도 실제 접속하는 db는 다 틀린데 그러다보면 결국 각 db별로 한번씩 접속하는 것인데 이렇게 해도 포퍼먼스가 떨어지는가요?"
db별로 접속은 한번씩 합니다만 db에 접속해서 sql구문을 db가 알수 있게 바꾸는 역할을 하는 파싱 단계를 거치게 되는데 이때 시간이
많이 걸린다는거죠..sql문이 여러번 있으면 파싱을 여러번 하게 되므로 더 속도가 떨어지게 될거구요..그리고 또 sql문이 여러건이면 하나의
sql문이 실행하기 위해 네트워크를 거쳐갔다가 돌아오는시간도 기다려야 하고..그러니까 sql문이 하나 보다는 여러개 있으면 더 속도가 떨
어지게 된다는 이야기 입니다..
참고하세요.
-
초보아밥퍼
2008.04.11 22:39
역시 쿼리는 잘 생각하시고 짜셔야 DB 로딩시간이 줄겠네요.
제가 보기에도 첫번째쪽이 조금 더 빠르겠네요.
대신에 p_in값에 따라 signatur값을 가져오게 되는데요.. 지금같은경우는 다 연결이 되어
안되겠지만 나중에라도 조건값에 따라서 꼭 모든 테이블을 조인할 필요성이 없을경우가
있습니다. 그럴경우 값이 있을때는 조건문으로 처리를 하시면 불필요한 테이블조인을
막으실수 있을 겁니다. 참고하세요 ^^
-
드럼통대가리
2008.04.15 20:41
쿼리 문만을 봐서는 알 수 없을거 같아요.
inner Join을 해도 해당 테이블의 키나 건수에 따라서 속도에는 많은 차이가 있습니다.
쿼리문만 봐서는 어느것이 좋다고 말씀드리긴 어려울것 같네요..테이블 구성(키이나 인덱스)이라든지 테이블의 크기에
따라서 달라질수 있는 내용입니다. 다만 일반적으로 앞에 join이 키값으로 join 되었다면 앞의 쿼리문이 더 효율적이라고
말씀드릴수 있겠습니다.
즐밥하세요..