【问题标题】:PHP SQL query very slowPHP SQL查询很慢
【发布时间】:2014-03-09 00:40:20
【问题描述】:

这一行使查询运行非常缓慢。如果我删除“+ K.OFFSET/1440”部分,它运行良好。有没有更快的方法来做到这一点? $From_Date = "02/04/2014" 和 $To_Date = "05/04/2014"。

AND (CT.START_GMT + K.OFFSET/1440 >= TO_DATE('$From_Date', 'mm/dd/yyyy')) AND (CT.START_GMT + K.OFFSET/1440 <= TO_DATE('$To_Date', 'mm/dd/yyyy'))";

【问题讨论】:

  • 请告诉我们完整的查询。

标签: php sql oracle


【解决方案1】:

只要您将函数添加、减去或将函数应用于列到正在使用的列:

  • WHERE 子句中的字段
  • ON 内的字段用于连接

您失去了任何索引的好处。

START_GMT 列可能是不再应用的索引的一部分。

您可以比较添加添加前后查询的索引使用情况,看看索引使用情况是否发生了变化。

 explain <your fast query>;
 explain <your slow query>;

如果关键问题是问题,您很可能会看到 2 个解释查询之间的“可能键”和“额外”列发生变化。

如果您将加法移到比较的另一端,您将获得索引收益:

  (CT.START_GMT  >= TO_DATE('$From_Date', 'mm/dd/yyyy') - K.OFFSET/1440) AND ...

对 where 子句中的所有比较执行此操作。祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2014-01-21
    • 2013-12-29
    • 2018-06-12
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多