-1

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 条件的查询(如上面的示例查询)是否会大大或略微减慢查询的执行速度?

4

1 回答 1

0

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

于 2013-09-08T14:34:56.787 回答