MySQLでEXPLAINを使っての重たいクエリの調査

今回は、

LaravelでのORMを使う中で、

MySQLでデータベースの検索処理で、

select * from master_sample;

などの確認データで、

色々なJOINなどをやっていると、

件数が増えてきて、

重たくなってきたので、

その調査をした時のメモ。

調査として、

EXPLAIN

を使ったのだが、

この辺りの調査は、実施したことなかったので、

試しながら、実際に試した時の個人用の備忘録。

使用したMySQLのバージョン確認

mysqlのコマンドラインで確認

mysql -V

実行結果

$  mysql -V
mysql  Ver 8.0.31-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))

MySQLでEXPLAINでの実行SQLの確認

実際に実行するコードとしては、

EXPLAIN SELECT * FROM master_sample;

のように使用する。

結果は、

idselect_typetabletypepossible_keyskeyrowsExtra
1SIMPLEmaster_sampleALLNULLNULL1000Using where

のようになる。

簡単に各項目をメモ

  • id: クエリ内のSELECTの識別子(複数のクエリがある場合に区別)
  • select_type: クエリの種類(SIMPLE, SUBQUERY, PRIMARYなど)
  • table: 対象のテーブル名
  • type: テーブルアクセス方法(ALL, INDEX, RANGE, REF, EQ_REF, CONST, SYSTEM)
  • possible_keys: 使用可能なインデックス(NULLなら候補なし)
  • key: 実際に使用されたインデックス
  • rows: 検索対象の推定行数(小さいほど効率的)
  • Extra: その他の情報(Using index, Using where, Using temporaryなど)

こちらになるので、

上記の

type

が、

ALL

については、

「フルスキャン」での検索になっているので、

インデックス適用を検討した方が良い。

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事