More Understandable. Finally :)

MySQL EXPLAIN Explained

You no longer have to search for cryptic or incomprehensible information from MySQL query plans. All EXPLAIN outputs are transformed into data that is easier to grasp.

Multiple Joins CSV
Lateral Join TSV
Independent Subquery Markdown
Dependent Subquery JSON
Fulltext Search CLI
  1. Prepend EXPLAIN FORMAT=TRADITIONAL to your query and execute it.
  2. Copy and paste the generated query plan.
  3. Submit it for analysis.

CSV with headers and the semicolon separator is the preferred format!

You can also use the API to integrate into your framework and simplify the workflow.

Nobody really understands EXPLAIN

EXPLAIN output is too cryptic

MySQL exports a ton of internal information that isn't understandable or interesting to anyone except their developers while the important information is either hidden or presented in a misleading manner.

Impossible to memorize
What did eq_ref and ref mean? Which table is <derived5>? I did not use that! Is anything of this important at all?
Misleading Information
Neither using filesort nor using index presented in the Extra column mean what you think. And ChatGPT also describes one of them wrong. But which one?

Everything simplified: No more searching for explanations

Focus on the important stuff

MySQL's EXPLAIN output is analysed and transformed to a model that is easy to understand. Unimportant technical implementation details are hidden while important stuff is highlighted for you.

Useful Notes
The output is completely recalculated to show hidden information you should focus on while cutting out unnecessities.
Complex EXPLAINs
All additional tasks, like dependent subqueries, that produce temporary results are highlighted when the data is stored and used.
Total Rows
The per-loop row estimates for every table are accumulated to show the real amount of rows affected.

You want examples?

How much more useful can it be?

Seeing the difference with your own queries is most impressive. However, here are 3 examples with simple and not too-complicated queries to get a first impression:

Multiple Joins
A very simple query joining three tables. But some of the tables are missing indexes.
Independent Subquery
A simple query doing joins and filtering by an IN(subquery) that will not be transformed to a join.
Dependent Subquery
A more complex query that executes a dependent subquery to fetch data from another table for every row.