MySQL 查询的 where 子句中的条件是否会IF
大大减慢执行速度?
这是一个示例查询:-
select * from alert_details_v adv
where (if(day(last_day(now()))<DAY(adv.alert_date),
day(last_day(now())),DAY(adv.alert_date))-adv.alert_trigger_days)<=day(now());
样本数据:
alert_id alert_date alert_trigger_days
==================================================
1 2013-09-14 00:00:00 6
2 2013-09-13 00:00:00 5
alert_date
: 一些用户输入的日期alert_trigger_days
:触发警报的实际日期之前的天数。
关于查询逻辑的简要说明:- 在这里,我试图查找当前月份的最后一天是否小于alert_date
(数据库列)的日期。无论是哪一天,都会被考虑。
基本上,此表用于存储警报信息。因此,如果用户选择了某个月的 30 日并且警报每月重复出现,那么对于 2 月,它将找不到第 30 日,因此不会显示记录。
我的问题是:如果表中有数十万条记录,where 子句中带有 if 条件的查询(如上面的示例查询)是否会大大或略微减慢查询的执行速度?