MySQL for Developers

Analyzing query performance with MySQL's explain statement

As a developer, you may have experienced slow query response times that are difficult to troubleshoot. Running the query multiple times is a nice way to get a sense of response time, but it doesn't help you understand what's going on behind the scenes or how to fix the slow query. Fortunately, MySQL has a solution in the form of the EXPLAIN statement.

In this video, we'll take a deep dive into the power of the EXPLAIN statement and how it can help you troubleshoot performance issues in your queries. We'll examine different versions of the statement, and show you how to read its output to understand what MySQL is doing to access your data.

Understanding MySQL's explain statement

EXPLAIN is a statement provided by MySQL that helps us analyze how queries are executed in a database. It shows the execution plan for a query, providing information about how the database will access tables and perform operations for the query.

When we run an EXPLAIN statement, MySQL provides us with an overview of how the query is going to be executed, including the type of access it uses to reach the data, the index used, and the estimated number of rows accessed. With this information, we can determine which queries need optimization to improve performance.

To use the EXPLAIN statement, we first need to identify which query we want to analyze. For example, let's examine the following SELECT statement:

Now let's run an EXPLAIN statement to examine how MySQL is accessing the people table.


This statement returns output that shows how MySQL accessed the table. Let's break down the columns in the output to understand what's going on:

  • ID: A unique identifier for the query being executed.
  • Select Type: Tells us the type of select statement is being executed. This can be simple, primary, union, or a few others.
  • Table: The name of the table being accessed.
  • Partitions: Displays the partitions being accessed for the query (beyond the scope of this course).
  • Type: The kind of access MySQL used to retrieve the data. This is one of the most important column values, and we'll discuss it in more detail later.
  • Possible Keys: The possible indexes that MySQL could use.
  • Key: The actual index that MySQL uses.
  • Key Length: Displays the length of the index used by MySQL.
  • Ref: The value being compared to the index.
  • Rows: An estimated number of rows that MySQL needs to examine to return the result.
  • Filtered: The estimated percentage of rows that match the query criteria.


The EXPLAIN statement is a powerful tool that developers can use to analyze and optimize MySQL queries. It provides valuable information on how the MySQL engine accesses the table data, and can help you identify issues with slow query performance.

In this article, we examined the various columns in the EXPLAIN statement output. Understanding these columns can help you identify areas where you can optimize queries for faster performance.

Happy optimizing!

About this lesson

Learning how to read and interpret MySQL's EXPLAIN statement is a vital skill when it comes to writing performant queries. Here we'll look at the basic EXPLAIN output.

Closed captioned

Feedback or questions? Reach out to our team at