Laravel開発時に実行されたSQLを確認する方法
最近はORMにクエリーを任せることが多くなっていますが、実際に流れているSQLを確認し冗長なクエリーを減らす・SQLのチューニングを行うというのはRDBを利用しているエンジニアとしては当たり前。ということで、Laravelで実行されたSQLを確認する方法をメモします。
[ 目次 ]
はじめに
こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。
今回はLaravel開発で実行されたSQLを確認する際のメモを残したいと思います。
最近はORMにクエリーを任せることが多くなっていますが、実際に流れているSQLを確認し冗長なクエリーを減らす・SQLのチューニングを行うというのはRDBを利用しているエンジニアとしては当たり前です。
どんなSQLが発行されているか確認しましょう。
■ 検証環境
ライブラリ | バージョン |
---|---|
PHP | ^7.1.3 |
Laravel | 5.7.* |
ログ出力を試す
\DB::enableQueryLog();
// SQL実行
$user_list = $UserModel::where('sex' , 'male')
->where(function($query){
$query->where('age', '<', 10)
->orWhere('score', '>', 70);
})
->get();
// SQLログを取得してdump
dd(\DB::getQueryLog());
もちろん簡単なクエリーについては確認不要だと思います。
複雑なものはしっかりSQLを確認し、直接実行して取得したデータの内容を確認したいですね。
今後の検討事項
ログの出力を仕組化するかどうかを検討したいと思っています。
local or development環境だけSQLログを出力し、開発者にSQLのクエリーを意識するようにしたいです。
https://codebriefly.com/handle-query-logging-laravel-5-6/
こちらが参考になるのではないかと思っています。
production環境については、DBのスロークエリーをDBAのような立場の人が確認するか監視システムを導入することでクエリーのチェックをしていきたいところです。
なので、production環境ではSQLログは吐きません。