我对视图上的(简单)查询感到疯狂。
查询是在前端以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,不要做那个栏目并且最后一次使用它”,是否可能?
感谢所有人。
答案 0 :(得分:1)
尝试在查询中添加提示:
/*+ opt_param('_OPTIMIZER_USE_FEEDBACK','FALSE') */
有关详情,请访问Google 基数反馈