Oracle - 加入两个复杂的视图 - 优化器故障

时间:2011-08-15 13:40:24

标签: performance oracle join views

我有两个非常复杂的观点。我需要生成将通过某些列加入的报告。 每个视图在不到一分钟的时间内分别返回完整的结果集。 当我加入它们时,优化器重建查询并做出奇怪的事情,因此结果根本不会返回。 问题是是否有办法告诉优化器首先检索两个集合,然后才加入它们(每个集合只有几千条记录)。

暂时解决方案是基于创建中间表(物化视图也有效),但我想在单个查询中执行此操作,

谢谢

1 个答案:

答案 0 :(得分:4)

无法查看解释计划,查询,视图和表格结构很难确定。我会说,通常在这些情况下,最好的答案是重写查询以不使用视图并直接执行您想要的操作。那可能会解决它。

如果您不能这样做,请尝试NO_REWRITE optimizer hint。像这样:

SELECT /*+ NO_REWRITE */ rest_of_your_query_goes_here

这将告诉Oracle直接尝试解释您的查询,而不是尝试重写它。