パンダのメモ帳

技術系のネタをゆるゆると

MySQLでの日付データの取り扱い

こんな記事を見つけたので忘れないうちにメモメモ。

MySQLでDATETIME型のデータを高速に検索する方法

まとめると

  • DATETIME型で扱うより、INT型にUNIXタイムスタンプを保持した方が高速。
  • DATETIME型にINDEXを設定しても、あまり効果は得られない。

ってことらしい。

どれぐらい高速かというと、非INDEX時で3〜4倍、INDEX時には100倍以上というのだから、あまり無視できる負荷じゃないなぁ、という印象。ただし、コンソールやphpMyAdminなど、データベースを直接参照したときに直感的にわかりづらくなってしまうのが難点。日付での検索を多用する場合や、少しでも検索速度を上げたい場合に有効なテクニック、ってところか。

ちなみに記事中では言及されていないけど、DATETIME型は8バイト、INT型は4バイトなので、データ量の節約にもなる。これも大量のレコードを扱う場合には気になるポイントなので、忘れないようにしたい。