MySQLで日時や日付で範囲検索する際に動作速度を向上させる方法
2024/01/15
MySQLでログ系等の大量にデータが格納されているテーブルから日時や日付で範囲検索する際に動作を高速化させたい。以下に対応方法をメモ。
対応方法
こちらの結論としてはUNIXタイムスタンプ型にするのが有効。datetime型で「2013-01-01 00:00:00」というデータではなく、int型で「1356966000」というデータを保存する。
また、検索の際はシングルクオートで囲わないようにする。
集計関連のページを作成しており、7つのSQL文があり
全部しらべたところ速度が3.6倍ほど向上した。
あとCOUNT関数よりもSUM関数で顕著な差が出た。
所感
全部UNIXタイムスタンプ型でいったらよさそうだけど、実務のことを考えると日々生成されるログ系をint型で、それ以外はdatetime型作るのが現実的っぽい。
参考サイト
関連記事
-
-
MySQLでデータがあれば上書き、無ければ挿入する
既存のソースを編集時に「REPLACE INTO~~」 という見たことの無いSQ ...
-
-
MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表示する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから干支(十二支 ...
-
-
Codeigniter4でMySQLに接続しCRUD操作する方法
Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...
-
-
MySQLでグループ化したものを条件で絞る(HAVING)
正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...
-
-
エックスサーバーでMySQLのサイズに注意
エックスサーバーで自動更新のログをMySQLに保存するようなシステムを動かしてい ...