最近有用到Oracle临时变,看了些文章,自己简单摘抄并整理了一下,测试为自己亲测,希望对大家有用。
1.使用场景
当你发现你的应用有多张表关联的时候, 并且这些表大部分都是比较庞大,而你关 联的时候发现其中的某一张或者某几张表 关联之后得到的结果集非常小并且查询得 到这个结果集的速度非常快,那么这个时 候我考虑在Oracle中创建“临时表”。
(1)当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行拆分并且得到比较小的结果集合存放在临时表中
(2)程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。
2.功能理解
在Oracle中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有的功能实现,而当你用完之后表中的数据就没用了。 Oracle的临时表创建后基本上不占用表空间,如果你没有指定临时表(包括临时表的索引)存放的表空间的时候,你插入到临时表的数据是存放在ORACLE系统额临时表空间中(TEMP)。
3.临时表的创建
(1)会话级临时表
会话级临时表因为这个临时表中的数据和你当前的会话有关系,当你当前session不退出的情况下,临时表中的数据就还存在,而当你退出当前的session的时候,临时表中的数据就全部没有了。当然这个时候你如果以另外一个session登录的时候是看不到另外一个session中插入到临时表中的数据的。即两个不同的session所插入的数据是互不相干的。当某一个session退出之后临时表中的数据就被截断(truncate table,即数据清空)了。