|
MYDB@MYDB10G >explain plan for
2 select *
3 from t1, t2
4 where t1.object_id = t2.object_id
5 and t1.data_object_id<100
6 and t1.object_id is not null
7 and t1.object_id not in (select t3.object_id
8 from t3
9 where t3.object_id is not null
10 group by object_id, object_name
11 having count(*) > 0)
12 /
已解释。
已用时间: 00: 00: 00.18
MYDB@MYDB10G >select * from table(dbms_xplan.display(null,null,'advanced'));
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2554849999
-----------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10 | 1830 | 98 (4)| 00:00:02 |
|* 1 | HASH JOIN | | 10 | 1830 | 98 (4)| 00:00:02 |
|* 2 | HASH JOIN ANTI | | 10 | 980 | 52 (4)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | T1 | 15 | 1275 | 46 (0)| 00:00:01 |
| 4 | VIEW | VW_NSO_1 | 16 | 208 | 5 (20)| 00:00:01 |
|* 5 | FILTER | | | | | |
| 6 | HASH GROUP BY | | 16 | 208 | 5 (20)| 00:00:01 |
|* 7 | TABLE ACCESS FULL| T3 | 304 | 3952 | 4 (0)| 00:00:01 |
| 8 | TABLE ACCESS FULL | T2 | 11654 | 967K| 45 (0)| 00:00:01 |
-----------------------------------------------------------------------------------
Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------
1 - SEL$5DA710D3
3 - SEL$5DA710D3 / T1@SEL$1
4 - SEL$683B0107 / VW_NSO_1@SEL$5DA710D3
5 - SEL$683B0107
7 - SEL$683B0107 / T3@SEL$2
8 - SEL$5DA710D3 / T2@SEL$1
Outline Data
-------------
/*+
BEGIN_OUTLINE_DATA
FULL(@"SEL$683B0107" "T3"@"SEL$2")
USE_HASH(@"SEL$5DA710D3" "T2"@"SEL$1")
USE_HASH(@"SEL$5DA710D3" "VW_NSO_1"@"SEL$5DA710D3")
LEADING(@"SEL$5DA710D3" "T1"@"SEL$1" "VW_NSO_1"@"SEL$5DA710D3"
"T2"@"SEL$1")
FULL(@"SEL$5DA710D3" "T2"@"SEL$1")
NO_ACCESS(@"SEL$5DA710D3" "VW_NSO_1"@"SEL$5DA710D3")
FULL(@"SEL$5DA710D3" "T1"@"SEL$1")
OUTLINE(@"SEL$1")
OUTLINE(@"SEL$2")
UNNEST(@"SEL$2")
OUTLINE_LEAF(@"SEL$5DA710D3")
OUTLINE_LEAF(@"SEL$683B0107")
ALL_ROWS
OPTIMIZER_FEATURES_ENABLE('10.2.0.4')
IGNORE_OPTIM_××DED_HINTS
END_OUTLINE_DATA
*/
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
2 - access("T1"."OBJECT_ID"="$nso_col_1")
3 - filter("T1"."DATA_OBJECT_ID"<100 AND "T1"."OBJECT_ID" IS NOT NULL)
5 - filter(COUNT(*)>0)
7 - filter("T3"."OBJECT_ID" IS NOT NULL)
Column Projection Information (identified by operation id):
-----------------------------------------------------------
1 - (#keys=1) "T1"."OBJECT_ID"[NUMBER,22], "T2"."OBJECT_ID"[NUMBER,22],
"T1"."GENERATED"[VARCHAR2,1], "T1"."OWNER"[VARCHAR2,30],
"T1"."OBJECT_NAME"[VARCHAR2,128], "T1"."SUBOBJECT_NAME"[VARCHAR2,30],
"T1"."SECONDARY"[VARCHAR2,1], "T1"."DATA_OBJECT_ID"[NUMBER,22],
"T1"."OBJECT_TYPE"[VARCHAR2,19], "T1"."CREATED"[DATE,7],
"T1"."LAST_DDL_TIME"[DATE,7], "T1"."TIMESTAMP"[VARCHAR2,19],
"T1"."STATUS"[VARCHAR2,7], "T1"."TEMPORARY"[VARCHAR2,1],
"T2"."OWNER"[VARCHAR2,30], "T2"."OBJECT_NAME"[VARCHAR2,30],
"T2"."SUBOBJECT_NAME"[VARCHAR2,30], "T2"."SECONDARY"[VARCHAR2,1],
"T2"."DATA_OBJECT_ID"[NUMBER,22], "T2"."OBJECT_TYPE"[VARCHAR2,19],
"T2"."CREATED"[DATE,7], "T2"."LAST_DDL_TIME"[DATE,7],
"T2"."TIMESTAMP"[VARCHAR2,19], "T2"."STATUS"[VARCHAR2,7],
"T2"."TEMPORARY"[VARCHAR2,1], "T2"."GENERATED"[VARCHAR2,1]
2 - (#keys=1) "T1"."OBJECT_ID"[NUMBER,22], "T1"."OWNER"[VARCHAR2,30],
"T1"."OBJECT_NAME"[VARCHAR2,128], "T1"."SUBOBJECT_NAME"[VARCHAR2,30],
"T1"."SECONDARY"[VARCHAR2,1], "T1"."DATA_OBJECT_ID"[NUMBER,22],
"T1"."OBJECT_TYPE"[VARCHAR2,19], "T1"."CREATED"[DATE,7],
"T1"."LAST_DDL_TIME"[DATE,7], "T1"."TIMESTAMP"[VARCHAR2,19],
"T1"."STATUS"[VARCHAR2,7], "T1"."TEMPORARY"[VARCHAR2,1],
"T1"."GENERATED"[VARCHAR2,1]
3 - "T1"."OWNER"[VARCHAR2,30], "T1"."OBJECT_NAME"[VARCHAR2,128],
"T1"."SUBOBJECT_NAME"[VARCHAR2,30], "T1"."OBJECT_ID"[NUMBER,22],
"T1"."DATA_OBJECT_ID"[NUMBER,22], "T1"."OBJECT_TYPE"[VARCHAR2,19],
"T1"."CREATED"[DATE,7], "T1"."LAST_DDL_TIME"[DATE,7],
"T1"."TIMESTAMP"[VARCHAR2,19], "T1"."STATUS"[VARCHAR2,7],
"T1"."TEMPORARY"[VARCHAR2,1], "T1"."GENERATED"[VARCHAR2,1],
"T1"."SECONDARY"[VARCHAR2,1]
4 - "$nso_col_1"[NUMBER,22]
5 - "OBJECT_ID"[NUMBER,22]
6 - (#keys=2) "OBJECT_ID"[NUMBER,22], "OBJECT_NAME"[VARCHAR2,128],
COUNT(*)[22]
7 - "OBJECT_NAME"[VARCHAR2,128], "OBJECT_ID"[NUMBER,22]
8 - "T2"."OWNER"[VARCHAR2,30], "T2"."OBJECT_NAME"[VARCHAR2,30],
"T2"."SUBOBJECT_NAME"[VARCHAR2,30], "T2"."OBJECT_ID"[NUMBER,22],
"T2"."DATA_OBJECT_ID"[NUMBER,22], "T2"."OBJECT_TYPE"[VARCHAR2,19],
"T2"."CREATED"[DATE,7], "T2"."LAST_DDL_TIME"[DATE,7],
"T2"."TIMESTAMP"[VARCHAR2,19], "T2"."STATUS"[VARCHAR2,7],
"T2"."TEMPORARY"[VARCHAR2,1], "T2"."GENERATED"[VARCHAR2,1],
"T2"."SECONDARY"[VARCHAR2,1]
已选择101行。
关键是子查询的名字,只要用这个就可以了
[ 本帖最后由 zergduan 于 2010-6-1 13:10 编辑 ] |
|