one possible matching row) | | | during the early optimization phase, but no row | | | was found. | +------------------------+---------------------------------------------------+ | Using filesort | Filesort is needed to resolve the query. This | | | means an extra phase where we first collect all | | | columns to sort, sort them with a disk based | | | merge sort and then use the sorted set to | | | retrieve the rows in sorted order. If the column | | | set is small, we store all the columns in the | | | sort file to not have to go to the database to | | | retrieve them again. | +------------------------+---------------------------------------------------+ | Using index | Only the index is used to retrieve the needed | | | information from the table. There is no need to | | | perform an extra seek to retrieve the actual | | | record. | +------------------------+---------------------------------------------------+ | Using index condition | Like 'Using where' but the where condition is | | | pushed down to the table engine for internal | | | optimization at the index level. | +------------------------+---------------------------------------------------+ | Using index | Like 'Using index condition' but in addition we | | condition(BKA) | use batch key access to retrieve rows. | +------------------------+---------------------------------------------------+ | Using index for | The index is being used to resolve a GROUP BY or | | group-by | DISTINCT query. The rows are not read. This is | | | very efficient if the table has a lot of | | | identical index entries as duplicates are | | | quickly jumped over. | +------------------------+---------------------------------------------------+ | Using intersect(...) | For index_merge joins. Shows which index are | | | part of the intersect. | +------------------------+---------------------------------------------------+ | Using join buffer | We store previous row combinations in a row | | | buffer to be able to match each row against all | | | of the rows combinations in the join buffer at | | | one go. | +------------------------+---------------------------------------------------+ | Using sort_union(...) | For index_merge joins. Shows which index are | | | part of the union. | +------------------------+---------------------------------------------------+ | Using temporary | A temporary table is created to hold the result. | | | This typically happens if you are using GROUP | | | BY, DISTINCT or ORDER BY. | +------------------------+---------------------------------------------------+ | Using where | A WHERE expression (in additional to the | | | possible key lookup) is used to check if the row | | | should be accepted. If you don't have 'Using | | | where' together with a join type of ALL, you are | | | probably doing something wrong! | +------------------------+---------------------------------------------------+ | Using where with |A