带DATEADD的DATEDIFF导致MySQL查询性能下降

时间:2017-03-21 04:26:50

标签: mysql datediff query-performance

下面的查询需要大约2秒,对于只有~3000左右的行的2个表上的这种直接连接似乎很长。

我强烈怀疑这一行存在问题:

但我不确定为什么。或者,也许连接条件搞砸了?

SELECT DISTINCT
, idnum
, DATEDIFF( DATE_ADD(atable.adate, INTERVAL 10 DAY), btable.bdate) as `DIFF`
  FROM atable
LEFT JOIN btable
ON atable.idnum = btable.idnum
;

我的问题类似于this,但不一样。在此之前,感谢伟大的SO社区。

1 个答案:

答案 0 :(得分:0)

您可以通过创建此查询的视图来减少时间并调用该视图而不是直接查询到表。这样

创建视图

CREATE VIEW viewname AS SELECT DISTINCT
, idnum
, DATEDIFF( DATE_ADD(atable.adate, INTERVAL 10 DAY), btable.bdate) as `DIFF`
  FROM atable
LEFT JOIN btable
ON atable.idnum = btable.idnum
;

致电视图

SELECT * FROM viewname

注意:在视图方法中,我们立即创建视图,并根据需要多次调用该视图。