安西先生…!! アプリケーションを速くしたいです……
DBのパフォーマンスを調整してみよう
まずはIndexを付与してみよう
Q1. DBにおけるIndexとは?
A1. データベースの性能を向上させる方法の一つ
構成要素
「探すレコードを識別するデータの項目」
「対象レコードの格納位置を示すポインタ」
つまり
格納位置を特定し、その位置を直接アクセスする事で、検索速度をあげられる。
なので
インデックスが設定されていない場合の検索では、テーブルの最初から順番に1件ずつ探すため、時間がかかります。
参考
https://www.atmarkit.co.jp/ait/articles/1703/01/news199.html
早速実践してみた。
tyamahori.com で実践する
インストールするもの
-
https://github.com/barryvdh/laravel-debugbar
- 色々とでバックしてくれるもの
導入直後のキャプチャ
ポイントはQueries
- ここを見れば発行されているクエリーが確認できる。
- それをデバッグしてクエリーを最適化する
対応前キャプチャ
無駄にクエリが吐かれているので直す
コードを修正したらがっつり減った
次はSQLのデバック
EXPLAINを使う
乱暴にいうと、SQLがどのように実行されるかを教えてくれるコマンド
sample.sql
explain select * from `posts` where `published` = 1 and `posts`.`deleted_at` is null order by `created_at`
desc
EXPLAINを叩いた結果wwwwwww
- typeがALLになっていたらダメ
- フルスキャンがかかりパフォーマンスが悪い
ガバガバ実装で草が生えた
とりあえずカラムにindexをつける。
と思ったけど、うまくindexが効かず挫折。。。
色々と調査はしているけど。。わからず。。
データが少なく、indexがつかない。。?
確固たる原因は分からず。。