Depende del motor que especifique. Por defecto, los datos de la tabla se almacenarán en el disco. Si especifica el motor MEMORY, los datos solo se almacenarán en la memoria.
Debería ser posible encontrar realmente los archivos que se crean en el sistema de archivos cuando se crean las tablas temporales. Después de ejecutar los siguientes comandos:
CREATE TABLE test.table_myisam (x int) ENGINE=MyISAM;
CREATE TABLE test.table_memory (x int) ENGINE=MEMORY;
CREATE TEMPORARY TABLE test.temp_table_myisam (x int) ENGINE=MyISAM;
CREATE TEMPORARY TABLE test.temp_table_memory (x int) ENGINE=MEMORY;
que después se comprueba el directorio: C: \ Datos de programa \ MySQL \ MySQL Server 5.5 \ data \ test (en Windows) y los archivos presentes fueron:
table_innodb.frm # Table definition.
table_innodb.MYD # MyISAM table data file.
table_innodb.MYI # MyISAM table index file.
table_memory.frm # No MYD or MYI file for the MEMORY engine.
Las tablas temporales se almacenan en C: \ Windows \ Temp y tienen nombres inusuales, pero internamente los datos se almacenan de la misma manera.
#sql9a0_7_d.frm # This is the MyISAM temporary table.
#sql9a0_7_d.MYD # MyISAM data file for temporary table.
#sql9a0_7_d.MYI # MyISAM index file for temporary table.
#sql9a0_7_c.frm # This is the MEMORY engine file. No MYD or MYI.
Y si especifica el motor 'blackhole' se almacenará en un dispositivo especial:/dev/null. – Johan
Bueno, no se llamarán 'temp_table_innodb' en el disco porque la tabla temporal solo es accesible por esta conexión, de modo que si realiza dos conexiones separadas al DB y crea una tabla temporal con cada una, puede llamarlas lo mismo y no colisionarán entre sí. Dicho todo esto, no tengo idea si están en la memoria o en el disco. Supongo, pero sin duda adivinaría mal, así que no lo haré. – Kenny
@Kenny: los encontré ... en la carpeta temporal (¡por supuesto!). Ver respuesta actualizada. –