Order By子句导致性能命中

时间:2018-04-03 17:15:20

标签: sql sorting oracle11g oracle12c

我有一个使用流水线表函数的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子句,我遇到了同样的问题。有没有办法解决和改善绩效?

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,在其中一列col50中,我调用了一个像下面这样实际执行的用户定义函数,这导致了时间。

当我从select查询中注释掉该列时,它会在一秒内运行。

select col1,col2, ../*my_fun(col50)*/, col51.. col75 from table(pipelinedtablefunction) 
order by col1

我们调整了功能,现在很好。