1)
select p.barcode, p2.BefCount
from
(Select p.barcode From 상품리스트 p) P
Left outer Join
(
select p.barcode, _B.BefCount as BefCount from 상품리스트 p
Left Outer Join ( select barcode, Sum(curjago) as BefCount from 재고 group by barcode ) _B On P.barcode = _B.barcode
) P2 ON p.barcode = p2.barcode
(5345개 행이 영향을 받음)
테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0
테이블 재고. 검색 수 1, 논리적 읽기 수 40, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0
테이블 상품리스트 검색 수 2, 논리적 읽기 수 62, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0
2)
select p.barcode, p2.BefCount, P.comname -- comname 필드추가
from
(Select p.barcode, c.comname From 상품리스트 p, 거래처리스트 C where c.comcode = p.comcode) P -- 거래처리스트 와 조인
Left outer Join
(
select p.barcode, _B.BefCount as BefCount from 상품리스트 p
Left Outer Join ( select barcode, Sum(curjago) as BefCount from 재고 group by barcode ) _B On P.barcode = _B.barcode
) P2 ON p.barcode = p2.barcode
(5345개 행이 영향을 받음)
테이블 재고 검색 수 5345, 논리적 읽기 수 10764, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0테이블상품리스트. 검색 수 1, 논리적 읽기 수 10929, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0,테이블 'Worktable'. 검색 수 0, 논리적 읽기 수 0, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0
테이블 거래처리스트 . 검색 수 1, 논리적 읽기 수 2, 물리적 읽기 수 0, 미리 읽기 수 0, LOB 논리적 읽기 수 0, LOB 물리적 읽기 수 0
상품리스트 의 인덱스는 barcode 입니다.
1 번과 2 번의 비용에서 차이가 많이 납니다.
(Select p.barcode, c.comname From 상품리스트 p, 거래처리스트 C where c.comcode = p.comcode) P
에서 "거래처리스트" 와 조인을 하고 다음 서브쿼리와 Left Outer Join 만 하는 건줄 알았는데 아닌가 봅니다.
제가 Join의 원리를 잘못이해 한건가요.
설명좀 부탁드립니다.
감사합니다.
두번째 쿼리 결과에서 거래처 리스트와 조인하는게 도 나을것 같은데요??