这一行使查询运行得非常慢。如果我删除“+ 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'))";发布于 2014-03-09 08:46:24
对列添加、减去或应用函数后,请立即将其应用于正在中使用的列:
WHERE子句中的字段的ON内的字段
你失去了它上面的任何索引的好处。
START_GMT列可能是不再应用的索引的一部分。
您可以比较添加加法前后查询的索引使用情况,并查看索引使用情况是否发生了变化。
explain <your fast query>;
explain <your slow query>;如果关键问题就是问题,那么您很可能会看到'possible_keys‘和'Extra’列在两个explain查询之间变化。
如果你将加法移到比较的另一边,你将会得到索引的好处:
(CT.START_GMT >= TO_DATE('$From_Date', 'mm/dd/yyyy') - K.OFFSET/1440) AND ...对where子句中的所有比较执行此操作。祝好运!
https://stackoverflow.com/questions/22277004
复制相似问题