MySQLでSQLの実行時間のみを調べる

SQL設計やチューニングで実行時間を計測する際に以下のような状況がよく出てくる。

  • SQLの実行時間が知りたい
  • 実行結果はいらない

方法1 mysql -vvvを使う

/home/kanno% cat sample.sql | mysql -vvv hoge_db | tail -n 3
1 row in set (3.62 sec)

Bye
  • 対象のSQLを書いたsample.sql(ファイル名は何でも)を用意
    • 単純なSQLならecho "select ..." | mysql ...で十分
  • mysqlコマンドの標準入力に渡す
    • -vvvオプションで実行時間を出すようにする
  • tailで実行時間以降の行だけ表示させる
    • Byeとかも邪魔ならheadで更に絞る
    • cat sample.sql | mysql -vvv hoge_db | tail -n 3 | head -n 1

方法2 timeコマンドを使う

/home/kanno% time (cat sample.sql | mysql hoge_db > /dev/null)
real    0m12.526s
user    0m0.079s
sys     0m0.009s