gpt4 book ai didi

sql - 流水线函数上的 Oracle 查询工作正常,但如果我添加条件就会窒息

转载 作者:行者123 更新时间:2023-12-01 01:20:19 24 4
gpt4 key购买 nike

我有一个管道函数,它返回一组自定义对象,即嵌套表。

效果很好 ( < 4 秒) 当我这样选择时;

select e.* from table(MY_PIPLINED_FUNCTION)e

但是当我添加 任何 条件(除了 where rownum<X ),查询需要永远执行(如 5+ 分钟)但 它确实在结尾处正确返回了所需的值 .

令我难以置信的是它 工作,但需要大量时间才能完成。

有没有人对此有任何想法?

附注:这是一个很大的结果集,包括行数(30K+)和列数(50+列)。

最佳答案

您是否在比较获得整个结果集的时间?或者只是前 N 行?

您的谓词是否过滤掉了 99% 的数据,从而使一个查询更加难以获得这 N 行?

流水线函数可能与它无关。您可以使用流水线函数并在不评估整个结果集的情况下仍然检索前 N 行。例如,下面的无限循环将在仅检索少量行的 IDE 中快速返回结果。

create or replace type number_nt as table of number;

create or replace function pipe_function return number_nt pipelined is
begin
while 1 = 1 loop
pipe row(1);
end loop;
end;
/

select column_value
from table(pipe_function)
where column_value < 2;

您可能需要添加有关函数和谓词的更多详细信息。

关于sql - 流水线函数上的 Oracle 查询工作正常,但如果我添加条件就会窒息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9702600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com