PHP SQL查询速度很慢

时间:2014-03-09 00:40:21

标签: php sql oracle

此行使查询运行速度非常慢。如果我删除“+ 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'))";

1 个答案:

答案 0 :(得分:2)

只要在列中添加,减去或应用函数,就可以使用以下列中的列:

  • WHERE子句中的字段
  • 联接的ON内的字段

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

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

您可以在添加添加之前和之后比较查询的索引使用,并查看索引使用是否已更改。

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

如果关键问题是问题,您很可能会看到'possible_keys'和'Extra'列在2个解释查询之间发生变化。

如果将添加移动到比较的另一侧,您将获得索引权益:

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

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