187 文字
1 分
MySQL 5.6 minor query optimizer tips
2014-01-20
... date_add(NOW(), interval -60 day) < column

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

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

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

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

MySQL 5.6 minor query optimizer tips
https://blog.teraren.com/posts/mysql-5-6-minor-query-optimizer-tips/
作者
Yuki Matsukura
公開日
2014-01-20
ライセンス
CC BY-NC-SA 4.0

コメント