안녕하세요 스칼라 서브쿼리에 대해 궁금한 점이 있어서 이렇게 글 씁니다....
제가 생각한 거로는 메인쿼리에서 해당 로우를 가져와 해당 로우만큼 서브쿼리가 실행된다고 이해했는데 실테스트 에서는 메인쿼리보다 스칼라 서브쿼리가 먼저 실행 되네요...이유가 뭐죠?ㅠㅠㅠ
select name,(select num from idtab where idtab.num=bmt1.id) num from bmt1 where bmt1.id>5678
Call Count CPU Time Elapsed Time Disk Query Current Rows
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Parse 1 0.000 0.000 0 0 0 0
Execute 1 0.000 0.000 0 0 0 0
Fetch 434 0.478 0.458 0 5910 0 4322
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Total 436 0.478 0.459 0 5910 0 4322
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user: SYS (ID=0)
Rows Row Source Operation
------- ---------------------------------------------------
0 STATEMENT
4322 INDEX RANGE SCAN IDTAB_IDX (cr=4785 pr=0 pw=0 time=283017 us)(Object ID 56069)
4322 TABLE ACCESS BY INDEX ROWID BMT1 (cr=1125 pr=0 pw=0 time=203216 us)
4322 INDEX RANGE SCAN BMT1_IDX (cr=626 pr=0 pw=0 time=69195 us)(Object ID 56068)
select bmt1.name,idtab.num from bmt1,idtab where bmt1.id=idtab.num and bmt1.id>5678;
Call Count CPU Time Elapsed Time Disk Query Current Rows
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Parse 1 0.000 0.000 0 0 0 0
Execute 1 0.000 0.000 0 0 0 0
Fetch 434 0.456 0.459 0 6342 0 4322
------- ------ -------- ------------ ---------- ---------- ---------- ----------
Total 436 0.456 0.459 0 6342 0 4322
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user: SYS (ID=0)
Rows Row Source Operation
------- ---------------------------------------------------
0 STATEMENT
4322 NESTED LOOPS (cr=6342 pr=0 pw=0 time=639922 us)
4322 TABLE ACCESS BY INDEX ROWID BMT1 (cr=1125 pr=0 pw=0 time=190368 us)
4322 INDEX RANGE SCAN BMT1_IDX (cr=626 pr=0 pw=0 time=82178 us)(Object ID 56068)
4322 INDEX RANGE SCAN IDTAB_IDX (cr=5217 pr=0 pw=0 time=283285 us)(Object ID 56069)
|