MySQL 5.6 minor query optimizer tips

MySQL
... date_add(NOW(), interval -60 day) < column

当たり前と言えば当たり前ですが、上記の検索はfull scanになっちゃうんですね。

左辺が変数に展開されるのかと思いきや、展開されないです。なので、一度変数に入れてから実行するなり、プログラム側で計算してから発行しないとだめです。

set @date_restriction = date_add(NOW(), interval -60 day);
... @date_restriction < column

おそらく、binlogとかの関係でこうなっちゃっているのかなーと思う。
これを踏まえて、SQLをできるだけ静的に書かないといけませんねぇ。。。
今までコードレビューでも見逃している疑惑が。。。。

タイトルとURLをコピーしました