在MYSQL查询中使用if条件

时间:2013-09-08 14:33:33

标签: mysql sql

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条件(如上面的示例查询中)查询会大幅减慢查询的执行速度在桌子上?

1 个答案:

答案 0 :(得分:0)

这可能完全取决于您的表格和数据。有时它可能有助于提高性能,有时可能会降低您的性能。