MySQL5.5以降 sjis環境でDATETIMEにindexが効かず遅い

MySQLを5.6にバージョンアップした際に、一部のクエリがやたら遅くなってしまい困りました。 散々ggった結果、ヒットした情報が以下。

character_set_connection = sjis でDATETIME型のカラムにインデックスがきかないはなし

http://bugs.mysql.com/bug.php?id=74449

なんと、character_set_connection = sjis の場合に限ってDATETIME型,DATE型カラムに誤った型変換が行われるらしい。 sjisなんてやめなはれ、は正論ですが、残念ながらsjisを捨てられるシステムではないので、以下のようにCASTで対処。

date型の場合

AND dl.date >= '2014-08-10'
↓
AND dl.date >= cast('2014-08-10' as date)

datetime型の場合

AND dl.date >= '2014-08-10'
↓
AND dl.date >= cast('2014-08-10' as datetime)

ご参考まで。