EXPLAIN Output Format • key_len  (JSON name:  key_length ) • ref  (JSON name:  ref ) • rows  (JSON name:  rows ) • filtered  (JSON name:  filtered ) • Extra  (JSON name: none) • system • const 1766 The table has at most one matching row, which is read at the start of the query. Because there is only one row, values from the column in this row can be regarded as constants by the rest of the optimizer. const  tables are very fast because they are read only once. The table has only one row (= system table). This is a special case of the  const  join type. The  type  column of  EXPLAIN  output describes how tables are joined. In JSON-formatted output, these are found as values of the  access_type  property. The following list describes the join types, ordered from the best type to the worst: There is no single JSON property corresponding to the  Extra  column; however, values that can occur in this column are exposed as JSON properties, or as the text of the  message  property. This column contains additional information about how MySQL resolves the query. For descriptions of the different values, see  EXPLAIN  Extra Information. The  filtered  column indicates an estimated percentage of table rows that are filtered by the table condition. The maximum value is 100, which means no filtering of rows occurred. Values decreasing from 100 indicate increasing amounts of filtering.  rows  shows the estimated number of rows examined and  rows  ×  filtered  shows the number of rows that are joined with the following table. For example, if  rows  is 1000 and  filtered  is 50.00 (50%), the number of rows to be joined with the following table is 1000 × 50% = 500. For  InnoDB  tables, this number is an estimate, and may not always be exact. The  rows  column indicates the number of rows MySQL believes it must examine to execute the query. If the value is  func , the value used is the result of some function. To see which function, use  SHOW WARNINGS  following  EXPLAIN  to see the extended  EXPLAIN  output. The function might actually be an operator such as an arithmetic operator. The  ref  column shows which columns or constants are compared to the index named in the  key column to select rows from the table. Due to the key storage format, the key length is one greater for a column that can be  NULL  than for a NOT NULL  column. The  key_len  column indicates the length of the key that MySQL decided to use. The value of  key_len enables you to determine how many parts of a multiple-part key MySQL actually uses. If the  key  column says  NULL , the  key_len  column also says  NULL . EXPLAIN Join Types