MySQL EXPLAINの読み方をJavaで理解する(2)

前回の例が思いのほかSQLの実行計画をまともに表現できているようなので、3つだけピックアップして詳しく図解しておきます。解説なしだと自分でもあまり読む気がしなかったというのもあります(^^;
1つ目はSQL 04、索引のない状態で、従業員番号(empno)が7,788である従業員の名前(ename)を表示するSQLです。

2つ目はSQL 06、SQL自体はSQL 04と同じですが、従業員番号(empno)に索引を付与しています。

3つ目はSQL 10、従業員全員の名前(ename)と所属する部門名(dname)を表示するSQLです。

ここで、rowsはあくまで推定値であることに注意してください。特にテーブル結合が何段にもなると、rowsはほとんどあてになりません。
MySQLは元々あまり複雑な実行計画は作れないので、あとはサブクエリを使用したときのEXPLAINが読めればほぼ十分ではないかと思います。このエントリをきっかけに、MySQLのEXPLAINを読める人が増えていってくれるとうれしいです。