We're updating the issue view to help you get more done.Learn more

EXPLAIN JSON

Support EXPLAIN FORMAT=JSON like MySQL 5.6 does.

Difference from MySQL's EXPLAIN FORMAT=JSON

We don't want to copy MySQL 5.6:
From the user point of view:

  • 5.6 output format is not documented and unstable (even MySQL Workbench fails to parse it in some cases)
    • I don't expect that any 3rd party is able to parse it, other than relying that it's a well-formed JSON document.
  • 5.6 output format doesn't allow to display some info we want to display
  • 5.6's output format has legacy of tabular output format in many places
  • MariaDB has more optimizer features, so we will have to produce output that 5.6 never produces

Currently supported

  • Basic SELECTs
  • Table access methods
    • full table/index scans
    • range access
    • index_merge access
    • I_S read optimizations
  • "Using where" (attached_condition)
  • rows and 'filtered' columns
  • Index Condition Pushdown ('index_condition')
  • UNIONs (incomplete)
  • Item-based subqueries (incomplete)
  • Basic join buffering
  • Single-table UPDATE/DELETE
  • Derived tables
  • Non-merged semi-joins (JTBMs)
  • [Merged] Semi-joins: SJ-Materialization
  • [Merged] Semi-joins: FirstMatch, DuplicateElimination, LooseScan

Not yet supported (important)

  • ORDER BY/GROUP BY/ DISTINCT handling – as agreed won't be ready before 10.1.2

Not yet supported (less important)

  • Subquery cache feature
  • Advanced join buffering (display MRR as a special kind of scan)

Status