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条件(如上面的示例查询中)查询会大幅减慢查询的执行速度在桌子上?
答案 0 :(得分:0)
这可能完全取决于您的表格和数据。有时它可能有助于提高性能,有时可能会降低您的性能。