2010年 9月 19日 はてなブックマーク -
タグ: #MySQL

DATETIME型で保存するのではなく、UNIX_TIMESTAMP関数を使いINT型にコンバートした形式で保存することにより、DATETIME 型より3倍~4倍高速化が実現できた。その際に注意しなければならないのが、INT型の年月日時を指定したカラムを生成しても実際にクエリを生成する際 に、’1219485900’(シングルクォート)して文字列(STRING型)として指定しないこと。うっかりこのように指定してしまうと、カラムが INT型であっても処理スピードが遅くなってしまう。ただし、このINT型で年月日時データを保存する方法にもデメリットがあって、 UNIX_TIMESTAMPなので直感的に見て人間が理解しずらいのである。そのためサーバのコマンドラインよりMySQL Clientを使いダイレクトにアクセスしデータを取得する必要があるケース(exp. 人間の手による緊急的な集計オペレーション)では、YYYY-MM-DD HH:MM:SSの形式にコンバートする必要があるかと思う。その場合は人手間だが以下のようにFROM_UNIXTIME関数を使用して結果を出力して ほしい

SELECT id, FROM_UNIXTIME(unixtime) FROM test_unixtime  
               
WHERE unixtime BETWEEN 1219485600 AND 1219485900;

MySQLでDATETIME型のデータを高速に検索する方法 | 深追い Fukaoi.org

1年前 | | 2010年 9月 19日 | このエントリーを含むはてなブックマーク