【发布时间】:2018-09-13 02:44:57
【问题描述】:
我有一个使用流水线表函数的 SQL 查询,如下所示。
select col1,col2,... col75 from table(pipelinedtablefunction)
order by col1
此查询在 14 分钟内返回 100 000 条记录。如果我删除 order by 子句并执行以下查询,查询将在 1 秒内运行并检索相同的结果。
select col1,col2,... col75 from table(pipelinedtablefunction)
我在游标查询的流水线函数中使用了 order by 子句,我遇到了同样的问题。有什么办法可以解决和提高性能?
【问题讨论】:
-
如果你的 col1 被索引?
-
是的,它已被索引。管道内衬函数内的游标查询庞大而复杂,但它是这样的。 select t1.col1,col2.. col75 from table1 t1, table2 t2 union all select t11.col1,col2.. col75 from table11 t11, table12 t12 t1 和 t11 中的 Col1 都是主键,被索引了
-
解释计划在哪里? pipelinedtablefunction 的代码也会有所帮助
标签: sql sorting oracle11g oracle12c