LoginSignup
4
10

More than 5 years have passed since last update.

Laravelで始める DBパフォーマンス入門

Last updated at Posted at 2019-03-30
1 / 25

安西先生…!! アプリケーションを速くしたいです……


DBのパフォーマンスを調整してみよう


まずはIndexを付与してみよう


Q1. DBにおけるIndexとは?


A1. データベースの性能を向上させる方法の一つ


構成要素

「探すレコードを識別するデータの項目」
「対象レコードの格納位置を示すポインタ」

つまり

格納位置を特定し、その位置を直接アクセスする事で、検索速度をあげられる。


なので

インデックスが設定されていない場合の検索では、テーブルの最初から順番に1件ずつ探すため、時間がかかります。

参考
https://www.atmarkit.co.jp/ait/articles/1703/01/news199.html


早速実践してみた。


tyamahori.com で実践する


インストールするもの


導入直後のキャプチャ

Screenshot from Gyazo


ポイントはQueries

  • ここを見れば発行されているクエリーが確認できる。
  • それをデバッグしてクエリーを最適化する

対応前キャプチャ

Screenshot from Gyazo


無駄にクエリが吐かれているので直す


コードを修正したらがっつり減った

まずはSQLの発行は減らせた!
Screenshot from Gyazo


次は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になっていたらダメ
  • フルスキャンがかかりパフォーマンスが悪い

Screenshot from Gyazo


ガバガバ実装で草が生えた


とりあえずカラムにindexをつける。


と思ったけど、うまくindexが効かず挫折。。。

色々と調査はしているけど。。わからず。。


データが少なく、indexがつかない。。?

確固たる原因は分からず。。


おしまい


4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10