如何避免在此sql中使用mysql函数?

  • 本文关键字:mysql 函数 何避免 sql mysql
  • 更新时间 :
  • 英文 :


我似乎正面临一个尴尬的情况,使用TIMESTAMPDIFF函数在mysql的查询条件。资源告诉我,这可能会降低执行效率,但我很好奇我应该如何继续。

下面是我的sql
SELECT personTotal.person_id
FROM personTotal
LEFT JOIN p2
ON p2.person_id = personTotal.person_id
WHERE TIMESTAMPDIFF(HOUR , personTotal.through_time, p2.through_time) < 20

您可以将WHERE子句表达为使用INTERVAL的加法:

SELECT p1.person_id
FROM personTotal p1
LEFT JOIN p2
ON p2.person_id = p1.person_id
WHERE
p1.through_time + INTERVAL 20 HOUR > p2.through_time;

上面查询的WHERE子句,除了不使用日期函数外,还可以sargable,这意味着两个表的日期列上的任何索引都可以在这里使用。您上面使用TIMESTAMPDIFF的版本是不可分割的,并且不能使用索引。

最新更新