Getting a MySQL Execution Plan

Put explain in front of an SQL statement to retrieve the execution plan.


The plan is shown in tabular form (some less important columns removed):

~| table | type | possible_keys | key  |~| rows | Extra
~| NULL  | NULL | NULL          | NULL |~| NULL | No tables...

The most important information is in the TYPE column. Although the MySQL documentation refers to it as “join type”, I prefer to describe it as “access type” because it actually specifies how the data is accessed. The meaning of the type value is described in the next section.

One trainer, one trainee. Six sessions each 2 hours long. Flexible dates. This is how our online training works.

About the Author

Photo of Markus Winand
Markus Winand tunes developers for high SQL performance. He also published the book SQL Performance Explained and offers in-house training as well as remote coaching at