我有两个非常复杂的观点。我需要生成将通过某些列加入的报告。 每个视图在不到一分钟的时间内分别返回完整的结果集。 当我加入它们时,优化器重建查询并做出奇怪的事情,因此结果根本不会返回。 问题是是否有办法告诉优化器首先检索两个集合,然后才加入它们(每个集合只有几千条记录)。
暂时解决方案是基于创建中间表(物化视图也有效),但我想在单个查询中执行此操作,
谢谢
答案 0 :(得分:4)
无法查看解释计划,查询,视图和表格结构很难确定。我会说,通常在这些情况下,最好的答案是重写查询以不使用视图并直接执行您想要的操作。那可能会解决它。
如果您不能这样做,请尝试NO_REWRITE optimizer hint。像这样:
SELECT /*+ NO_REWRITE */ rest_of_your_query_goes_here
这将告诉Oracle直接尝试解释您的查询,而不是尝试重写它。