PHPテクニカルセミナーに参加してきた
PHPテクニカルセミナーは2回目の参加となります。
今回のお題「高負荷WEBサービスへの対策と構成」
主催:アシアル株式会社
講演者:安藤祐介 さん
今回学んだこと
EXPLAIN
以下引用
SQLの実行計画を確認する
肝となるSQLはEXPLAINで実行計画を確認する
・問い合わせるテーブルにインデックスがあるか
・問い合わせにインデックスが利用されるかどうか
必要であればインデックスを作成する
・照会件数が現実的な数値になっているか
EXPLAINを用いると対象のSQLがどのように実行されるかが表示される
以下SQLの例
mysql> explain select * from posts; +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------+ | 1 | SIMPLE | posts | ALL | NULL | NULL | NULL | NULL | 2 | | +----+-------------+-------+------+---------------+------+---------+------+------+-------+
特に重視する箇所はpossible_keysとrows。
possible_keysはindexやprimary keyの存在を示している。
rowsは処理対象の行数を示している。
最終的にはrowsが少ないほど高速にSQLは動作するということになる。
(今回の例ではrowsが2と少ないですが。。。)