【发布时间】:2011-01-26 09:40:56
【问题描述】:
谁能提供一个如何在 oracle pl/sql 中使用并行表函数的例子。我们需要运行 15 年的海量查询并结合结果。
SELECT *
FROM Table(TableFunction(cursor(SELECT * FROM year_table)))
...是我们真正想要的。最里面的 select 将给出所有年份,而 table 函数将每年执行大量查询并返回一个集合。我们遇到的问题是所有年份都被提供给一个表函数本身,我们宁愿每年都并行调用表函数。我们尝试了各种按哈希和范围进行的分区,但都没有帮助。
另外,我们可以从函数声明中删除关键字 PIPELINED 吗?因为我们没有执行任何转换,只需要结果集的聚合。
【问题讨论】:
-
您能描述一下您想要实现的目标以及您认为需要管道功能的原因吗?目前,听起来您需要每年运行一个查询。
-
即使我们每年运行一个查询,我们也需要在所有年份范围内并行执行。如果有比使用并行流水线更好的选择,请提出建议。
标签: sql oracle plsql parallel-processing performance