-1

MySQL クエリの where 句のIF条件によって、実行が大幅に遅くなりますか?

1 つのサンプル クエリを次に示します。

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