**************************
Predicate Move-Around (PM)
**************************
PM: PM bypassed: Outer query contains no views.
PM: PM bypassed: Outer query contains no views.
query block SET$1 transformed to SEL$02B15F54 (#0)
FPD: Considering simple filter push in query block SEL$02B15F54 (#0)
"T1"."ID"="T2"."ID" AND "T1"."N"="T2"."N" AND "T1"."PAD"="T2"."PAD" AND "T1"."N">500 AND "T2"."PAD" LIKE 'A%'
try to generate transitive predicate from check constraints for query block SEL$02B15F54 (#0)
finally: "T1"."ID"="T2"."ID" AND "T1"."N"="T2"."N" AND "T1"."PAD"="T2"."PAD" AND "T1"."N">500 AND "T2"."PAD" LIKE 'A%' AND "T2"."N">500 AND "T1"."PAD" LIKE 'A%'
FPD: transitive predicates are generated in query block SEL$02B15F54 (#0)
"T1"."ID"="T2"."ID" AND "T1"."N"="T2"."N" AND "T1"."PAD"="T2"."PAD" AND "T1"."N">500 AND "T2"."PAD" LIKE 'A%' AND "T2"."N">500 AND "T1"."PAD" LIKE 'A%'
apadrv-start sqlid=2629578423929517488
:
call(in-use=5064, alloc=16344), compile(in-use=79048, alloc=80536), execution(in-use=115616, alloc=117840)
*******************************************
Peeked values of the binds in SQL statement
*******************************************
Final query after transformations:******* UNPARSED QUERY IS *******
SELECT DISTINCT "T1"."ID" "ID","T1"."N" "N","T1"."PAD" "PAD" FROM "CHRIS"."T2" "T2","CHRIS"."T1" "T1" WHERE "T1"."ID"="T2"."ID" AND "T1"."N"="T2"."N" AND "T1"."PAD"="T2"."PAD" AND "T1"."N">500 AND "T2"."PAD" LIKE 'A%' AND "T2"."N">500 AND "T1"."PAD" LIKE 'A%'
kkoqbc: optimizing query block SEL$02B15F54 (#0)
:
call(in-use=5408, alloc=16344), compile(in-use=80320, alloc=80536), execution(in-use=115616, alloc=117840)
kkoqbc-subheap (create addr=0x7f70ce435618)
****************
QUERY BLOCK TEXT
****************
SELECT /*+ SET_TO_JOIN(@SET$1) */ *
FROM t1
WHERE n > 500
INTERSECT
SELECT *
FROM t2
WHERE t2.pad LIKE 'A%'
SELECT DISTINCT "T1"."ID" "ID",
"T1"."N" "N",
"T1"."PAD" "PAD"
FROM "CHRIS"."T2" "T2",
"CHRIS"."T1" "T1"
WHERE "T1"."ID"="T2"."ID"
AND "T1"."N"="T2"."N"
AND "T1"."PAD"="T2"."PAD"
AND "T1"."N">500 AND "T2"."PAD" LIKE 'A%'
AND "T2"."N">500 AND "T1"."PAD" LIKE 'A%'
----- Current SQL Statement for this session (sql_id=28zj3nmxpmddh) -----
EXPLAIN PLAN FOR
SELECT /*+ SET_TO_JOIN(@SET$1) */ *
FROM t1
WHERE n > 500
INTERSECT
SELECT *
FROM t2
WHERE t2.pad LIKE 'A%'
sql_text_length=125
sql=EXPLAIN PLAN FOR
SELECT /*+ SET_TO_JOIN(@SET$1) */ *
FROM t1
WHERE n > 500
INTERSECT
SELECT *
FROM t2
WHERE t2.pad LIKE 'A%'
----- Explain Plan Dump -----
----- Plan Table -----
============
Plan Table
============
-------------------------------------------------+-----------------------------------+
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-------------------------------------------------+-----------------------------------+
| 0 | SELECT STATEMENT | | | | 4 | |
| 1 | HASH UNIQUE | | 1 | 156 | 4 | 00:00:01 |
| 2 | NESTED LOOPS | | | | | |
| 3 | NESTED LOOPS | | 1 | 156 | 3 | 00:00:01 |
| 4 | TABLE ACCESS FULL | T2 | 1 | 78 | 2 | 00:00:01 |
| 5 | INDEX UNIQUE SCAN | T1_PK | 1 | | 0 | |
| 6 | TABLE ACCESS BY INDEX ROWID | T1 | 1 | 78 | 1 | 00:00:01 |
-------------------------------------------------+-----------------------------------+
Predicate Information:
----------------------
4 - filter(("T2"."N">500 AND "T2"."PAD" LIKE 'A%'))
5 - access("T1"."ID"="T2"."ID")
6 - filter(("N">500 AND "T1"."PAD" LIKE 'A%' AND "T1"."N"="T2"."N" AND "T1"."PAD"="T2"."PAD"))
- 강좌 URL : http://www.gurubee.net/lecture/4371
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.