> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements.md).

# ANALYZE and EXPLAIN Statements

{% columns %}
{% column %}
{% content-ref url="/pages/V5AHwk7KGUWGaNkhZLlj" %}
[ANALYZE FORMAT=JSON](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/analyze-format-json.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Gain deep insight into query execution with JSON-formatted analysis. This command combines optimizer estimates with actual runtime statistics for precise performance tuning.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/HSRBdlo0V8TyDql5ydEm" %}
[ANALYZE FORMAT=JSON Examples](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/analyze-formatjson-examples.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Review practical examples of ANALYZE FORMAT=JSON output. Learn to identify performance bottlenecks by comparing estimated costs against actual execution metrics.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/3yCa6z81Ms8hCKd5h4go" %}
[ANALYZE: Interpreting rows and filtered members](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/analyze-interpreting-rows-and-filtered-members.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Understand the r\_rows and r\_filtered fields in analysis output. Learn how these actual runtime counters compare to the optimizer's rows and filtered estimates.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/jZTmsYqc31EkCtLdyrPN" %}
[ANALYZE Statement](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/analyze-statement.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Learn to use the ANALYZE statement to execute a query and produce a performance report. This command reveals how close the optimizer's plan was to the actual execution.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/jLcn1x8hPuHdmy1o0AL6" %}
[EXPLAIN ANALYZE](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/explain-analyze.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Understand the historical context of EXPLAIN ANALYZE in MariaDB. Learn how this syntax maps to the modern ANALYZE statement for profiling query execution.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/o1fDEnYq7zOtPDtp7D8U" %}
[EXPLAIN FORMAT=JSON](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/explain-format-json.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Get comprehensive query plans in JSON format. This output provides detailed optimizer data, including costs and attached conditions, not found in the tabular view.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/OJvu3KK61oTVTVOnPMj4" %}
[EXPLAIN](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/explain.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Complete EXPLAIN statement reference: SELECT/UPDATE/DELETE syntax, EXTENDED and PARTITIONS options, FORMAT=JSON output, EXPLAIN FOR CONNECTION usage.
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}
{% content-ref url="/pages/i0JQfzuZUUeMMDlpnxK9" %}
[Using Buffer UPDATE Algorithm](/docs/server/reference/sql-statements/administrative-sql-statements/analyze-and-explain-statements/using-buffer-update-algorithm.md)
{% endcontent-ref %}
{% endcolumn %}

{% column %}
Understand the 'Using buffer' strategy for UPDATE operations. Learn how MariaDB prevents infinite update loops when modifying indexed columns during a range scan.
{% endcolumn %}
{% endcolumns %}
