MySQLの実際のクエリ実行時間を測定する方法
MySQLで実際のクエリ実行時間を正確に測定したい場合、「プロファイリング(profiling)」機能を利用するのが有効です。この機能は、クエリを実行する前に値を「1」に設定しておく必要があります。
プロファイリングを使った測定手順
測定は、以下の順序で行います。
SET profiling を 1 に設定 クエリを実行 SHOW PROFILES で結果を確認
実際の操作例
まず、プロファイリングを有効にします。
mysql> SET profiling = 1; Query OK, 0 rows affected, 1 warning (0.00 sec)
次に、測定対象となるクエリを実行します。ここでは例として、次のSELECT文を使用します。
mysql> SELECT * from MilliSecondDemo;
実行結果は以下のとおりです。
+-------------------------+ | MyTimeInMillSec | +-------------------------+ | 2018-10-08 15:19:50.202 | +-------------------------+ 1 row in set (0.00 sec)
表示上の所要時間は「0.00秒」となっていますが、これだけでは実際の処理時間はわかりません。そこで、次のクエリを実行して実際の所要時間を確認します。
mysql> SHOW PROFILES;
このクエリを実行すると、以下のような出力が得られます。
+----------+------------+------------------------------+ | Query_ID | Duration | Query | +----------+------------+------------------------------+ | 1 | 0.00051725 | SELECT * from MilliSecondDemo| +----------+------------+------------------------------+ 1 row in set, 1 warning (0.00 sec)
この結果から、先ほどのSELECT文の実際の実行時間が「0.00051725秒」だったことがわかります。SHOW PROFILESでは、セッション内で実行された各クエリにIDが割り当てられ、それぞれの所要時間(Duration)が高い精度で表示されるため、パフォーマンスのボトルネックとなっているクエリを特定する際にも非常に役立ちます。
-
MySQLで文字列を日時(DATETIME)に変換する方法【STR_TO_DATE活用術】
MySQLでは、STR_TO_DATE()関数とフォーマット指定子を組み合わせることで、VARCHAR型などで文字列として保存されている日付・時刻データを、DATETIME型に変換することができます。 基本構文 フォーマット指定子を使用した基本構文は以下の通りです。 select str_to_date(yourColumnName,%d/%m/%Y %h:%i %p) as anyAliasName from yourTableName; 主なフォーマット指定子の意味 %d:日(2桁) %m:月(2桁) %Y:年(4桁) %h:時(12時間制・2桁) %i:分(2桁) %p:午前/午後
-
MySQLで時間差を取得するクエリの書き方を解説
MySQLで現在時刻との時間差を取得する方法MySQLでは、NOW() 関数と INTERVAL を組み合わせることで、「現在時刻から一定時間以内」のレコードを簡単に抽出できます。ここでは、現在時刻から5時間以内に到着したデータを取得するクエリを例に、その手順を解説します。1. サンプルテーブルの作成まず、日時を格納するカラムを持つテーブルを作成します。mysql> create table DemoTable1570 -> ( -> ArrivalTime datetime