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;
のように使用する。
結果は、
id | select_type | table | type | possible_keys | key | rows | Extra |
1 | SIMPLE | master_sample | ALL | NULL | NULL | 1000 | Using 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
については、
「フルスキャン」での検索になっているので、
インデックス適用を検討した方が良い。
コメント一覧
コメントはまだありません。
コメント送信
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。
コメントを残す