全球临时表VS流水线哪个更好,为什么?

时间:2013-12-17 06:41:25

标签: oracle plsql

我想从函数返回记录。这些记录应放在可全局访问的表中。为了在这个全局可访问的表中插入记录,我们有两个选项,我们将使用管道衬里或批量收集到该表中。我该怎么用?为什么???

提出这个问题的原因是 在全球临时表中,我们只是批量收集 TEM_TABLE

但在 PIPELINING

我们通过查询中的所有主页进行循环。

2 个答案:

答案 0 :(得分:3)

全局临时表是物理对象。这意味着我们将它们写入磁盘。这都是开销,所以只有当我们有很多偶然数据需要在会话中多次访问时,它们才有用。

流水线功能程序单元,用于查询或有数据。通常用于将数据从一种形状转换为另一种形状,例如,将一条记录分成几条,反之亦然。当数据具有单个查询的生命周期时,我们可以使用流水线函数。

这些不是对立的结构。可以想象编写一个流水线函数,它从全局临时表中读取记录,或者用PLF的输出填充GTT。

答案 1 :(得分:2)

全球临时表:
常见的用法是当您有OLAP操作的特定用户时,松散地说报告。
这些报告使用大量聚合数据,这些信息在多个报告中重复使用。因此,缓存此会话的信息是个好主意,这可以通过使用临时表来完成。

表值函数(管道):
在oracle中是参数视图的等效概念。 当您查询子查询时,在子查询where子句中需要指定参数,在指定where子句时无效。 sampleshelp