我有一个使用流水线表函数的SQL查询,如下所示。
select col1,col2,... col75 from table(pipelinedtablefunction)
order by col1
此查询在14分钟内返回100 000条记录。如果我删除order by子句并执行以下查询,则查询将在1秒内运行并检索相同的结果。
select col1,col2,... col75 from table(pipelinedtablefunction)
我在游标查询中使用了pipelined函数中的order by子句,我遇到了同样的问题。有没有办法解决和改善绩效?
答案 0 :(得分:0)
我发现了这个问题,在其中一列col50中,我调用了一个像下面这样实际执行的用户定义函数,这导致了时间。
当我从select查询中注释掉该列时,它会在一秒内运行。
select col1,col2, ../*my_fun(col50)*/, col51.. col75 from table(pipelinedtablefunction)
order by col1
我们调整了功能,现在很好。