ブックマーク / zenn.dev/odachannnn (1)

  • 【MySQL】WHERE BETWEENは本当に速いのか ~datetimeカラムの場合~

    はじめに この前仕事番環境にて、あるSQLがいつの間にか4000msほどかかるようになっていました。 WHERE句で使用していたdatetime型のカラムにインデックスを張っておらず、 100万レコードに対してフルスキャンが走っていたことが原因の1つでした。 インデックスを張り、速度も70msに短縮できたので上長に報告したところ、 「もともとのSQLは比較演算子で絞ってるの? BETWEENの方が速いんじゃない?」 との指摘があったので検証を行いました。 MySQLでは度々 「WHERE句で範囲を絞るときは比較演算子よりもBETWEENの方が速い」 と言われます。 当にBETWEEN演算子は速いのか、検証してみたいと思います。

    【MySQL】WHERE BETWEENは本当に速いのか ~datetimeカラムの場合~
    strawberryhunter
    strawberryhunter 2023/06/23
    MySQL 8.0のドキュメントを引用している部分は、列の型と検索条件の型が一致していない場合に明示的にCAST()するとインデックスが使われるなどしてパフォーマンスが改善するというもの。一致していても意味ある?本当に?
  • 1