Synopsis
--------

EXPLAIN FORMAT=JSON is a variant of EXPLAIN command that produces output in
JSON form. The output always has one row which has only one column titled
"JSON". The contents are a JSON representation of the query plan, formatted
for readability:

EXPLAIN FORMAT=JSON SELECT * FROM t1 WHERE col1=1\G

*************************** 1. row ***************************
EXPLAIN: {
 "query_block": {
  "select_id": 1,
  "table": {
   "table_name": "t1",
   "access_type": "ALL",
   "rows": 1000,
   "filtered": 100,
   "attached_condition": "(t1.col1 = 1)"
  }
 }
}

Output is different from MySQL
------------------------------

The output of MariaDB's EXPLAIN FORMAT=JSON is different from EXPLAIN
FORMAT=JSON in MySQL.The reasons for that are:

* MySQL's output has deficiencies. Some are listed here: EXPLAIN FORMAT=JSON
in MySQL
* The output of MySQL's EXPLAIN FORMAT=JSON is not defined. Even MySQL
Workbench has trouble parsing it (see this blog post).
* MariaDB has query optimizations that MySQL does not have. Ergo, MariaDB
generates query plans that MySQL does not generate.

A (as yet incomplete) list of how MariaDB's output is different from MySQL can
be found here: EXPLAIN FORMAT=JSON differences from MySQL.

Output Format
-------------

TODO: MariaDB's output format description.

URL: https://mariadb.com/kb/en/explain-format-json/