Converting Heap to MyISAM issue on temp table defined as innodb
"Temporary table" is an overloaded term.


CREATE TEMPORARY TABLE - a table you create and manage.
An internal temp table used in a big, complex, SELECT.


The latter case causes the message "converting heap to MyISAM".  Here's the flow:


The SELECT creates a temp table (for subquery, GROUP BY, etc),
starts it as MEMORY, then
finds that it is too big ("a few hundred thousand rows" -- bigger than both tmp_table_size and max_heap_table_size).


It is normal.  It should usually be ignored.  The temp table was never InnoDB, so no conversion there happened.  (In 8.0, tmp tables will be InnoDB, not MyISAM or MEMORY.)

If you would like to show us the query, together with SHOW CREATE TABLE and EXPLAIN SELECT, we may have tips on improving it.

If you create your own large MEMORY table, you are taking RAM away from other things (eg, innodb_buffer_pool_size), thereby slowing down the system in general.

Do not try to simulate internal temp tables in InnoDB.  There is too much baggage you can't avoid, but it can.  (Redo log, undo log, transactional semantics, etc.)