mysql datediff函数与比较间隔日

qnzebej0  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(240)

datediff函数和直接减去间隔日有什么区别?
SELECT * FROM table WHERE DATEDIFF(CURDATE(), publish_date) <= 3 SELECT * FROM table WHERE publish_date >= CURDATE() - INTERVAL 3 DAY 结果数据是一样的,但似乎 2. 路快一点?

kd3sttzy

kd3sttzy1#

第一个表达式,使用 DATEDIFF() 在进行筛选之前,需要对每一行应用date函数。
相比之下,第二个表达式并不意味着这样的预处理: CURDATE() - INTERVAL 3 DAY 只计算一次,然后直接与 publish_date . 此 predicate 可以利用日期列上的索引。这是正确的方法。
在技术术语中,我们说第二个 predicate 是sargable,而第一个 predicate 不是:这表示搜索参数是sargable
经验法则:如果你有办法的话,不要将函数应用到你过滤的列上。

相关问题