Pipilened vs table 在 PL/SQL 中键入 return 函数
Pipilened vs table type return function in PL/SQL
pipilened PL/SQL 函数与非 pipilened 且具有 "Table" 类型 "Table"(记录集合)的函数相比有哪些优点和缺点。如果可能,请举例说明情况?
我想如果使用流水线函数,您的函数可以创建 unlimited/endless 个结果集。例如,函数可以 return 自然数或斐波那契数列。在查询中使用它时,您可以添加 where rownum < 100
以将输出限制为您实际需要的长度。
另一个实际上更重要的区别是,如果您不使用 PIPELINED
table 函数,则必须在使用之前计算完整的结果集。
如果计算结果是 slow/costly,这可能非常重要。
通常,用户只想查看前 N 行(这就是 FIRST_ROWS
优化器模式存在的原因)。
换句话说,只有 PIPELINED
table 函数完全支持 FIRST_ROWS
,因为只有在需要时才计算结果。
将此与在 Internet 上查找内容进行比较:大多数情况下,您会在结果集的第一页上找到有趣的 link,而您对随后的数百万次点击不感兴趣。
pipilened PL/SQL 函数与非 pipilened 且具有 "Table" 类型 "Table"(记录集合)的函数相比有哪些优点和缺点。如果可能,请举例说明情况?
我想如果使用流水线函数,您的函数可以创建 unlimited/endless 个结果集。例如,函数可以 return 自然数或斐波那契数列。在查询中使用它时,您可以添加 where rownum < 100
以将输出限制为您实际需要的长度。
另一个实际上更重要的区别是,如果您不使用 PIPELINED
table 函数,则必须在使用之前计算完整的结果集。
如果计算结果是 slow/costly,这可能非常重要。
通常,用户只想查看前 N 行(这就是 FIRST_ROWS
优化器模式存在的原因)。
换句话说,只有 PIPELINED
table 函数完全支持 FIRST_ROWS
,因为只有在需要时才计算结果。
将此与在 Internet 上查找内容进行比较:大多数情况下,您会在结果集的第一页上找到有趣的 link,而您对随后的数百万次点击不感兴趣。