MySQL - 高效的日期查询

时间:2014-11-12 19:29:42

标签: mysql sql

我正在尝试优化一些涉及比较日期的查询。这是在PHP中完成的。目前,WHERE语句的设置如下:

WHERE
search_deals_online.expirationDate > DATE_ADD( CURDATE( ) , INTERVAL -1 DAY ) AND 
search_deals_online.createDate > DATE_ADD( CURDATE( ) , INTERVAL -30 DAY )

然而,这似乎必须计算每一行的日期(约250k)。是否值得通过PHP硬编码日期,所以它看起来像:

WHERE
search_deals_online.expirationDate > '2014-11-12' AND 
search_deals_online.createDate > '2014-10-13'

1 个答案:

答案 0 :(得分:0)

如果您发现需要经常进行此查询,则应考虑覆盖相关日期列的索引。另外,请确保您在表格上有PRIMARY KEYUNIQUE NOT NULL字段,这有助于编制索引。

然后,只需确保每个表达式的一侧是字段名称。例如,始终使用search_deals_online.expirationDate > DATE_ADD( CURDATE() , INTERVAL -1 DAY )而不是DATEDIFF(search_deals_online.expirationDate, CURDATE()) > 1。函数内的字段不是SARGable,并且不会利用索引。