Skip to main content

03D

Less than 1 minuteOracle DBcrashcourseoracleoracle-dboracle-sql

D-03d

JOIN

๋ฐฉ์‹

OUTER JOIN

NESTED LOOP JOIN

  • SQL ๋ฌธ
SELECT A.DNAME, B.ENAME, B.SAL
  FROM EMP B, DEPT A
 WHERE A.DEPTNO = B.DEPTNO
   AND B.SAL > 200
   AND A.LOCATION = 'DALLAS'
  • ์‹คํ–‰๊ณ„ํš NESTED LOOP TABLE ACCESS (BY INDEX ROWID) OF DEPT (TABLE) INDEX (RANGE SCAN) OF DEPT_IDX (INDEX) TABLE ACCESS (BY INDEX ROWID) OF EMP (TABLE) INDEX (RANGE SCAN) OF EMP_IDX (INDEX)

SORT MERGE JOIN

HASH JOIN

  • Hash area size ๊ด€๋ฆฌ ์ค‘์š” (ํ•œ์ •์  ๊ณต๊ฐ„)
  • Hash ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
  • ๋งŽ์€ ๋ถ€ํ•˜ ๋ฐœ์ƒ (๋‚ด๋ถ€์ž์› ์‚ฌ์šฉ์ด ๋งŽ์Œ 0)
select /*+ LEADING(A) FULL(A) FULL(B) USE_HASH(A B) */
		A.CARD__NO A.CRE_DT, B.STORE_ID, B.AMOUNT
FROM CARD A, TRX_LIST B
WHERE A.CARD=NO = B.CARD_NO
AND A.CRE_DT >= 20160115
AND B.TRX_DT >= 20160115

SEMI JOIN

select DEPTNO
from DEPT a
where EXISTS(select 'X',
			 from emp B
			 where a.deptno = b.deptno)