oracle中临时表相对于普通表的优势

oracle中临时表相对于普通表的优势,oracle,oracle11g,oracle10g,Oracle,Oracle11g,Oracle10g,我是在oracle中创建临时表的。但是我不明白这个的最佳用途。 有人能帮我了解一下在Oracle中使用临时表(创建临时表temp\u table)比普通表(创建表temp\u table)有什么特点和好处吗 )来自: 临时表定义以与永久表相同的方式存在 表定义,但数据仅在 事务或会话。临时表在应用程序中很有用 其中必须暂时保留结果集,可能是因为 结果是通过运行多个操作构建的 : 临时表中的数据是会话专用的,这意味着 每个会话只能查看和修改自己的数据 因此,一个方面是数据对会话是私有的。对于永久表

我是在oracle中创建临时表的。但是我不明白这个的最佳用途。 有人能帮我了解一下在Oracle中使用临时表(创建临时表temp\u table)比普通表(创建表temp\u table)有什么特点和好处吗 )

来自:

临时表定义以与永久表相同的方式存在 表定义,但数据仅在 事务或会话。临时表在应用程序中很有用 其中必须暂时保留结果集,可能是因为 结果是通过运行多个操作构建的

:

临时表中的数据是会话专用的,这意味着 每个会话只能查看和修改自己的数据

因此,一个方面是数据对会话是私有的。对于永久表中的未提交数据也是如此,但对于临时表,数据可以在提交过程中保持私有(基于创建时的
on commit
子句)


另一个方面是他们使用的,这意味着您使用临时表生成的重做和撤消开销要比将相同的数据临时放入永久表、可选地对其进行更新,然后在使用完毕后将其删除所产生的开销少得多。如果多个会话需要其自己版本的临时数据,您还可以避免争用和锁定问题。

下面给出了我们应该在何时使用临时表的一些要点:-

1) 创建临时表用于以表格形式存储数据,以便在需要时在特定会话中轻松检索数据

2) 它还添加了一个安全性目的,即仅为该特定会话保留可用数据


3) 当代码变长并且打开了很多游标时,最好将数据放在临时表中,以便在需要的时间轻松获取数据。

临时表存储在临时表空间中主要用于存储会话期间或有限时间内的数据。感谢Alex的解释。因此,如果多个会话(例如多个登录用户)使用一个临时表,那么他们会如何表现呢?好的,让我解释一下情况。我在查询中使用in子句时使用的是预先准备好的语句。所以in子句有动态值,所以我不知道有多少?我应该放在那里吗。我可以使它动态,但它将不是一个好的代码。所以有人建议我使用临时表。但是相同的查询可以由多个登录使用,其中每个用户都可以在参数中拥有自己的值。那么它在那种情况下会如何表现呢?@santu-你可以这么做。只要填充临时表并从同一会话中调用语句,调用将只看到刚才放在那里的数据。多个会话可以同时拥有自己的私有数据,而不会发生冲突。但我认为这更像是一种SQL Server方法;您还可以查看填充数组或PL/SQL表的情况,具体取决于生成值的位置和调用位置(PL/SQL、Java等等)。或者,如果值来自另一个表,则应该直接连接,而不是使用任何临时结构。