当我在查询中使用多个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万行。
答案 0 :(得分:3)
考虑到所有保密措施,我建议您查看EXPLAIN PLAN两个查询。在我看来,WITH只是语法糖,允许您在子查询中重用某些sql。但总而言之,它并不总能带来最有效的计划。
是的,10 000 000总是很慢。
答案 1 :(得分:2)
我确认WITH CLAUSE不会提高Oracle数据库的性能。 它只允许使用查询名称而不是重复整个查询文本。
此外,它允许定义随后在查询中使用的PL / SQL函数。