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 ...
で十分
- 単純なSQLなら
- 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