To zależy od wybranego silnika. Domyślnie dane tabeli będą przechowywane na dysku. Jeśli określisz silnik MEMORY, dane będą przechowywane tylko w pamięci.
Powinno być możliwe znalezienie plików utworzonych w systemie plików podczas tworzenia tabel tymczasowych. Po uruchomieniu następujące polecenia:
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;
I następnie sprawdzane w katalogu: C: \ ProgramData \ MySQL \ MySQL 5.5 \ data \ Test Server (Windows) i pliki Obecni byli:
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.
Tabele tymczasowe są przechowywane w C: \ Windows \ Temp i mają nietypowe nazwy, ale wewnętrznie dane są przechowywane w ten sam sposób.
#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.
Jeśli określisz silnik "blackhole", będzie on przechowywany w specjalnym urządzeniu:/dev/null. – Johan
Cóż, nie będą one nazywane "temp_table_innodb" na dysku, ponieważ tabela tymczasowa jest dostępna tylko dla tego jednego połączenia, tak że jeśli tworzysz dwa osobne połączenia z bazą danych i tworzysz tabelę tymczasową z każdym, możesz nazwać je to samo i nie będą ze sobą kolidować. To wszystko powiedziało, nie mam pojęcia, czy są w pamięci, czy na dysku. Zgaduję, ale nie wątpię, że się mylę, więc nie zrobię tego. – Kenny
@Kenny: Znalazłem je ... w folderze temp (oczywiście!). Zobacz zaktualizowaną odpowiedź. –