インデックスで使用される定数式は一度だけ評価されます。 どういう意味ですか ?例を挙げてください
オプティマイザーが定数に解決できる式は定数に解決され、行ごとに評価されません。
WHERE start_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
今日実行すると、そのクエリはこれとまったく同じになります...
WHERE start_date >= '2018-04-25'
...しかし、論理的に同等ではありません。実行されます同様に なぜなら式 DATE_SUB(CURDATE(), INTERVAL 1 MONTH) 定数に減らすことができ、クエリを計画するときにオプティマイザーがこれを行います。
DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
start_dateのインデックスの行で、>= '2018-04-25'はしたがって、簡単に見つかります。
サーバーはじゃない 各行からstart_dateを抽出し、 DATE_SUB(CURDATE(), INTERVAL 1 MONTH) を評価します 行ごとに比較します。
オプティマイザーが定数に解決できる式は定数に解決され、行ごとに評価されません。
今日実行すると、そのクエリはこれとまったく同じになります...
...しかし、論理的に同等ではありません。実行されます同様に なぜなら式
DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
定数に減らすことができ、クエリを計画するときにオプティマイザーがこれを行います。start_dateのインデックスの行で、>= '2018-04-25'はしたがって、簡単に見つかります。
サーバーはじゃない 各行からstart_dateを抽出し、
DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
を評価します 行ごとに比較します。