oracle查询中的“WITH”子句优化

时间:2012-02-28 10:21:05

标签: sql oracle oracle10g query-optimization

当我在查询中使用多个WITH子句时,它执行的时间更长,而不是没有它。 查询结构如下:

with t1 as (select some_fields from table1 inner join table2),
     t2 as (select some_fields from t1 inner join table3),
     t3 as (select some_fields from t2 inner join table4)
select * from t3

应该使用什么方法来优化类似的查询? 在我的例子中,每个子查询返回大约1000万行。

2 个答案:

答案 0 :(得分:3)

考虑到所有保密措施,我建议您查看EXPLAIN PLAN两个查询。在我看来,WITH只是语法糖,允许您在子查询中重用某些sql。但总而言之,它并不总能带来最有效的计划。

是的,10 000 000总是很慢。

答案 1 :(得分:2)

我确认WITH CLAUSE不会提高Oracle数据库的性能。 它只允许使用查询名称而不是重复整个查询文本。

此外,它允许定义随后在查询中使用的PL / SQL函数。