相同的查询、相同的数据、相同的执行计划但响应时间不同 (ORACLE 11g)
Same query, same data, same execution plan BUT different response time (ORACLE 11g)
我对视图的(简单)查询感到疯狂。
查询是在前端动态构建的,where 子句的条件如下:
AND( value1 = '*'
OR value1 = 'Y'
OR value1 is null)
此块是根据 3 个复选框构建的,因此当仅选中 1 个复选框时,您可以拥有条件
AND( value1 = '*')
除了条件
之外,查询对每个值组合都有不错的响应时间(1 秒)
AND( value1 = '*')
条件
AND( value1 = 'Y')
有 30 分钟的响应时间。
尝试使用 TOAD 执行查询时,我注意到即使对于这些情况,第一次尝试的响应时间也很长,但第二次我使用相同的数据执行相同的查询时,响应时间为 30 分钟。
列 value1 很难评估(取决于具有其他查询的 3 个函数),但对我来说真的很奇怪,查询在条件 AND (value1 ='*' or value1 ='Y)
.[=15 的情况下工作正常=]
我只是想要一种告诉 oracle 优化器的方法 "Ehy, don't do anything whit that column and use it for last",可能吗?
感谢大家。
尝试向查询添加提示:
/*+ opt_param('_OPTIMIZER_USE_FEEDBACK','FALSE') */
更多信息google基数反馈
我对视图的(简单)查询感到疯狂。
查询是在前端动态构建的,where 子句的条件如下:
AND( value1 = '*'
OR value1 = 'Y'
OR value1 is null)
此块是根据 3 个复选框构建的,因此当仅选中 1 个复选框时,您可以拥有条件
AND( value1 = '*')
除了条件
之外,查询对每个值组合都有不错的响应时间(1 秒)AND( value1 = '*')
条件
AND( value1 = 'Y')
有 30 分钟的响应时间。
尝试使用 TOAD 执行查询时,我注意到即使对于这些情况,第一次尝试的响应时间也很长,但第二次我使用相同的数据执行相同的查询时,响应时间为 30 分钟。
列 value1 很难评估(取决于具有其他查询的 3 个函数),但对我来说真的很奇怪,查询在条件 AND (value1 ='*' or value1 ='Y)
.[=15 的情况下工作正常=]
我只是想要一种告诉 oracle 优化器的方法 "Ehy, don't do anything whit that column and use it for last",可能吗?
感谢大家。
尝试向查询添加提示:
/*+ opt_param('_OPTIMIZER_USE_FEEDBACK','FALSE') */
更多信息google基数反馈