我有一个oracle sql查询,它有访问计划附加到它。如何在不更改sql查询的情况下更改访问计划。我认为甲骨文有数据库表存储SQL ID和计划ID,更新计划ID到新计划ID将强制SQL查询使用不同的解释计划。如何更改oracle解释计划为sql查询手动
我使用Oracle 10,在这种情况下,我不想触摸现有的查询。我将用提示编写另一个查询并获得所需的解释计划。现在我将使用解释计划的新标记并将其附加到原始的sql id。这是如何做到这一点的逻辑,但我不知道所有表需要更新来实现这一点。第一步:SQLI_D1 - > PLAN_ID1;第二步:SQL_ID2 - > PLAN_ID2; STep3:SQL_ID1 - > PLAN_ID2
为什么你想这样做 - 因为你认为Oracle选择了一个次优计划? Oracle是否拥有制定合理计划所需的所有信息 - 特别是统计信息是否最新?或者,如果你使用10g,你是否可能受到绑定变量窥视的困扰? (这对11g来说不是问题)。您可以向优化器提供提示,但这会改变语句,并且通常会隐藏一个潜在问题。 – 2014-09-25 10:19:42