相同的查询,相同的数据,相同的执行计划但不同的响应时间(ORACLE 11g)

时间:2018-02-19 15:45:52

标签: sql oracle11g query-performance

我对视图上的(简单)查询感到疯狂。

查询是在前端以dinamically方式构建的,而where子句的条件如下:

 AND(   value1 = '*'
        OR value1 = 'Y'
        OR value1 is null)

此块是根据3复选框构建的,因此只有选中1个框时,您才能拥有条件

 AND( value1 = '*')

对于每个值组合,查询都有很好的响应时间(1秒),条件除外

AND( value1 = '*')

和条件

AND( value1 = 'Y')

有30分钟的响应时间。

尝试使用TOAD执行查询我注意到即使对于那些情况,第一次尝试响应时间也很好,但第二次使用相同数据执行相同查询时,响应时间为30分钟。

列值1非常难以评估(取决于具有其他一些查询的3个函数),但对于我而言,查询在条件AND (value1 ='*' or value1 ='Y)的情况下工作正常非常奇怪。

我想要一种告诉oracle优化器的方法“Ehy,不要做那个栏目并且最后一次使用它”,是否可能?

感谢所有人。

1 个答案:

答案 0 :(得分:1)

尝试在查询中添加提示:

/*+ opt_param('_OPTIMIZER_USE_FEEDBACK','FALSE') */

有关详情,请访问Google 基数反馈