This tool helps clarify and format the output of EXPLAIN, optionally saving it for sharing via IRC, email, IM, and so on. The output of EXPLAIN and EXPLAIN EXTENDED are supported.

This must be the output of the explain command, not just a SQL query.

For more information please see EXPLAIN and EXPLAIN ANALYZER.

Share this explain with the following url: http://mariadb.org/ea/nnq3q
ID Select Type Table Access Type Possible Keys Used Key Key Length Ref Rows Examined Filtered Extra
1 SIMPLE p ALL
  • post_author
NULL NULL NULL 2494 100.00 Using temporary; Using filesort
1 SIMPLE u ALL
  • PRIMARY
NULL NULL NULL 5 80.00 Using where; Using join buffer
An estimate of how many rows we will find in the table for each key lookup.
What kind of SELECT the table comes from.
Extra information about this join.
How rows are found from the table (join type).
How many bytes of the key that was used (shows if we are using only parts of the multi-column key).
keys in table that could be used to find rows in the table
The name of the key that is used to retrieve rows. NULL is no key was used.
Alias name of table. Materialized temporary tables for sub queries are named <subquery#>
The reference that is used to as the key value.
Sequence number that shows in which order tables are joined.
A full table scan is done for the table (all rows are read). This is bad if the table is large and the table is joined against a previous table! This happens when the optimizer could not find any usable index to access rows.
A non unique index or prefix of an unique index is used to find the rows. Good if the prefix doesn't match many rows.
A unique index is used to find the rows. This is the best possible plan to find the row.
All data needed from this table can be read from the index instead of opening the table data file. This speeds up the query.
Filesort is needed to resolve the query. This means an extra phase where we first collect all columns to sort, sort them with a disk based merge sort and then use the sorted set to retrieve the rows in sorted order. If the columns set is small, we store all the columns in the sort file to not have to go to the database to retrieve them again.
DuplicateWeedout is an execution strategy for Semi-join subqueries.
A temporary table is created to hold the result. This typically happens if you are using GROUP BY, DISTINCT or ORDER BY.
LooseScan is an execution strategy for Semi-join subqueries.
A WHERE expression (in addition to the possible key lookup) is used to check if the row should be accepted. If you don't have 'Using where' together with a join type of ALL, you are probably doing something wrong!
Index Condition Pushdown is an optimization that is applied for access methods that access table data through indexes: range, ref, eq_ref, ref_or_null, and Batched Key Access.
DuplicateWeedout is an execution strategy for Semi-join subqueries.
FirstMatch is an execution strategy for Semi-join subqueries.
Multi Range Read is an optimization aimed at improving performance for IO-bound queries that need to scan lots of rows.
The SELECT is a SIMPLE one.
Semi-join Materialization is a special kind of subquery materialization used for Semi-join subqueries.
If a derived table cannot be merged into its parent SELECT, it will be materialized in a temporary table, and then parent select will treat it as a regular base table.
The SELECT is a PRIMARY one.
The primary key of the table.

Plain Text Explain

Convert explain to vertical format
+----+-------------+-------+------+---------------+------+---------+------+------+----------+---------------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | filtered | extra                           |
+----+-------------+-------+------+---------------+------+---------+------+------+----------+---------------------------------+
|  1 | SIMPLE      | p     | ALL  | post_author   | NULL | NULL    | NULL | 2494 | 100.00   | Using temporary; Using filesort |
|  1 | SIMPLE      | u     | ALL  | PRIMARY       | NULL | NULL    | NULL | 5    | 80.00    | Using where; Using join buffer  |
+----+-------------+-------+------+---------------+------+---------+------+------+----------+---------------------------------+
Show Plain Text Explain
Tabular Parser
Split into 2 rows
table: p
extended format
table: u
extended format
Tabular Parser

Submit a new Explain