can avoid ALL  by adding indexes that enable row retrieval from the table based on constant values or column values from earlier tables. 

## EXPLAIN Extra Information 

The Extra  column of EXPLAIN  output contains additional information about how MySQL resolves the query. The following list explains the values that can appear in this column. Each item also indicates for JSON-formatted output which property displays the Extra  value. For some of these, there is a specific property. The others display as the text of the message  property. 

If you want to make your queries as fast as possible, look out for Extra  column values of Using filesort  and Using temporary , or, in JSON-formatted EXPLAIN  output, for using_filesort  and using_temporary_table  properties equal to true . 

• Backward index scan  (JSON: backward_index_scan ) 

The optimizer is able to use a descending index on an InnoDB  table. Shown together with Using index . For more information, see Section 8.3.13, “Descending Indexes” . 

• Child of ’ table ’ pushed join@1  (JSON: message  text) 

This table is referenced as the child of table  in a join that can be pushed down to the NDB kernel. Applies only in NDB Cluster, when pushed-down joins are enabled. See the description of the ndb_join_pushdown  server system variable for more information and examples. 

• const row not found  (JSON property: const_row_not_found ) 

For a query such as SELECT ... FROM tbl_name , the table was empty. 

• Deleting all rows  (JSON property: message ) 

For DELETE , some storage engines (such as MyISAM ) support a handler method that removes all table rows in a simple and fast way. This Extra  value is displayed if the engine uses this optimization. 

• Distinct  (JSON property: distinct ) 

MySQL is looking for distinct values, so it stops searching for more rows for the current row combination after it has found the first matching row. 

• FirstMatch( tbl_name )  (JSON property: first_match ) 

The semijoin FirstMatch join shortcutting strategy is used for tbl_name . 

• Full scan on NULL key  (JSON property: message ) 

This occurs for subquery optimization as a fallback strategy when the optimizer cannot use an index- lookup access method. 

• Impossible HAVING  (JSON property: message ) 

The HAVING  clause is always false and cannot select any rows. 

• Impossible WHERE  (JSON property: message ) 

The WHERE  clause is always false and cannot select any rows. 

• Impossible WHERE noticed after reading const tables  (JSON property: message ) 

MySQL has read all const  (and system ) tables and notice that the WHERE  clause is always false. 

