【问题标题】:Same query, same data, same execution plan BUT different response time (ORACLE 11g)相同的查询、相同的数据、相同的执行计划但不同的响应时间(ORACLE 11g)
【发布时间】:2018-07-29 21:18:18
【问题描述】:

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

查询是在前端动态构建的,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)

我只是想要一种方法告诉 oracle 优化器“呃,不要对那一列做任何事情并将其用于最后”,这可能吗?

谢谢大家。

【问题讨论】:

    标签: sql oracle11g query-performance


    【解决方案1】:

    尝试在查询中添加提示:

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

    如需了解更多信息,请访问谷歌基数反馈

    【讨论】:

    • 是的,这正是我想要的。非常感谢。现在我想知道为什么 oracle 优化器会在我的查询中犯这个错误,可能取决于我应该在其他方式和其他地方(索引、连接等)修复的东西?
    • @Vincenzo Raimondi 我不好解释,所以谷歌基数反馈
    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2023-03-09
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    相关资源
    最近更新 更多