creatdep oracle_SYS_TEMP_ 临时表的生成与Oracle内部操作

本文介绍了Oracle数据库中以SYS_TEMP_开头的临时表的生成原因及其在执行WITH语句等操作时的作用。通过执行计划和10046事件追踪,展示了SQL执行过程中如何产生并使用这些临时对象,帮助理解Oracle的内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SYS_TEMP_ 临时表的生成与Oracle内部操作

今天有网友问道一个问题,Oracle数据库里发现有一个莫名其妙的临时表,以SYS_TEMP_ 开头,但是不知道是做什么的,也找不到具体的SQL。

我提示:可以通过执行计划去反查SQL,这样就可以从视图中找到相关的SQL语句。

果然,SQL被如此找到。那么这些临时对象是如何产生,其用途又何在呢?

在Oracle数据库中,很多SQL在执行的过程中,都可能产生中间的过程对象,在执行之后会被清理删除,如果你不了解这些内部操作,可能就会发现比较奇怪的对象。看如下测试。

建立一个测试表,执行一个WITH语句查询,中间实体化的过程就引入临时表,这些可以从执行计划中看到:

SQL> connect eygle/eygle@enmo

Connected.

SQL> create table t as select * from dba_objects;

Table created.

SQL> set linesize 150

SQL> set autotrace traceonly

SQL> with t1 as (select count(*) from t) select * from t1 t11, t1 t12;

Execution Plan

----------------------------------------------------------

Plan hash value: 3178380639

--------------------------------------------------------------------------------------------------------

| Id  | Operation           | Name               | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT       |                   |     1 |    26 |   429     (1)| 00:00:01 |

|   1 |  TEMP TABLE TRANSFORMATION |                   |       |       |        |           |

|   2 |   LOAD AS SELECT       | SYS_TEMP_0FD9D6697_3729F2 |       |       |        |           |

|   3 |    SORT AGGREGATE       |                   |     1 |       |        |           |

|   4 |     TABLE ACCESS FULL       | T                   | 90776 |       |   425     (1)| 00:00:01 |

|   5 |   MERGE JOIN CARTESIAN       |                   |     1 |    26 |     4     (0)| 00:00:01 |

|   6 |    VIEW            |                   |     1 |    13 |     2     (0)| 00:00:01 |

|   7 |     TABLE ACCESS FULL       | SYS_TEMP_0FD9D6697_3729F2 |     1 |    13 |     2     (0)| 00:00:01 |

|   8 |    BUFFER SORT   &nbs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值