bugfix> mysql > 投稿

インデックスで使用される定数式は一度だけ評価されます。 どういう意味ですか ?例を挙げてください

回答 1 件
  • オプティマイザーが定数に解決できる式は定数に解決され、行ごとに評価されません。

    WHERE start_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
    
    

    今日実行すると、そのクエリはこれとまったく同じになります...

    WHERE start_date >= '2018-04-25'
    
    

    ...しかし、論理的に同等ではありません。実行されます同様に なぜなら式 DATE_SUB(CURDATE(), INTERVAL 1 MONTH)  定数に減らすことができ、クエリを計画するときにオプティマイザーがこれを行います。

    start_dateのインデックスの行で、>= '2018-04-25'はしたがって、簡単に見つかります。

    サーバーはじゃない 各行からstart_dateを抽出し、 DATE_SUB(CURDATE(), INTERVAL 1 MONTH) を評価します  行ごとに比較します。

あなたの答え