测试数据:

成都创新互联服务项目包括石城网站建设、石城网站制作、石城网页制作以及石城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,石城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到石城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
SQL> create table test1 as select * from dba_objects; Table created. SQL> create table test2 as select * from user_objects; Table created. SQL> create table test3 as select * from dba_objects; Table created.
收集统计信息:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCOTT',
tabname => 'TEST1',
estimate_percent => 100,
method_opt => 'for columns owner size repeat',
no_invalidate => FALSE,
degree => 4,
granularity => 'ALL',
cascade => TRUE);
END;
/
PL/SQL procedure successfully completed.
SQL> with t as(select t1.* from test1 t1,test2 t2 where t1.object_id=t2.object_id) select * from t,test3 t3 where t.object_id=t3.object_id;
11 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 2878150729
-------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
-------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 86999 | 16M| | 1605 (1)| 00:00:20 |
|* 1 | HASH JOIN | | 86999 | 16M| | 1605 (1)| 00:00:20 |
| 2 | TABLE ACCESS FULL | TEST2 | 13 | 65 | | 3 (0)| 00:00:01 |
|* 3 | HASH JOIN | | 86999 | 16M| 9352K| 1602 (1)| 00:00:20 |
| 4 | TABLE ACCESS FULL| TEST1 | 86997 | 8325K| | 347 (1)| 00:00:05 |
| 5 | TABLE ACCESS FULL| TEST3 | 86999 | 8326K| | 347 (1)| 00:00:05 |
-------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
3 - access("T1"."OBJECT_ID"="T3"."OBJECT_ID")
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2491 consistent gets
2484 physical reads
0 redo size
3736 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
11 rows processed
加 materialize hint,强制oracle生成临时表
SQL> with t as(select /*+ materialize */t1.* from test1 t1,test2 t2 where t1.object_id=t2.object_id) select * from t,test3 t3 where t.object_id=t3.object_id;
11 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 3288461629
----------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 582M| 165G| | 3963 (40)| 00:00:48 |
| 1 | TEMP TABLE TRANSFORMATION | | | | | | |
| 2 | LOAD AS SELECT | SYS_TEMP_0FD9D661A_155646 | | | | | |
|* 3 | HASH JOIN | | 86997 | 8750K| | 351 (1)| 00:00:05 |
| 4 | TABLE ACCESS FULL | TEST2 | 13 | 65 | | 3 (0)| 00:00:01 |
| 5 | TABLE ACCESS FULL | TEST1 | 86997 | 8325K| | 347 (1)| 00:00:05 |
|* 6 | HASH JOIN | | 582M| 165G| 9352K| 3613 (44)| 00:00:44 |
| 7 | TABLE ACCESS FULL | TEST3 | 86999 | 8326K| | 347 (1)| 00:00:05 |
| 8 | VIEW | | 86997 | 17M| | 332 (1)| 00:00:04 |
| 9 | TABLE ACCESS FULL | SYS_TEMP_0FD9D661A_155646 | 86997 | 8750K| | 332 (1)| 00:00:04 |
----------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID")
6 - access("T"."OBJECT_ID"="T3"."OBJECT_ID")
Statistics
----------------------------------------------------------
55 recursive calls
8 db block gets
2525 consistent gets
2485 physical reads
656 redo size
3736 bytes sent via SQL*Net to client
523 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
3 sorts (memory)
0 sorts (disk)
11 rows processed