Getting a MySQL Execution Plan


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

EXPLAIN SELECT 1;

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.

About our book “SQL Performance Explained”
It is well written and is not too heavy on the guts of databases
Mr. B on Amazon.co.uk (5 stars)

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 http://winand.at/

?Recent questions at
Ask.Use-The-Index-Luke.com

1
vote
2
answers
5.3k
views

"Order by RAND()" - can use Index?

Feb 23 at 12:06 Markus Winand ♦♦ 936
random index mysql order-by-rand
0
votes
2
answers
1.2k
views

index for better performance for a merge operation

Feb 20 at 11:43 antilet 1
merge index
0
votes
0
answers
2.1k
views

Join with inequalities only

Dec 16 '14 at 12:06 Markus Winand ♦♦ 936
inequality join