Belirttiğiniz motora göre değişir. Varsayılan olarak, tablo verileri diskte saklanır. MEMORY motorunu belirtirseniz, veriler sadece bellekte saklanır.
Geçici tablolar oluşturulduğunda dosya sisteminde oluşturulan dosyaları gerçekten bulmak mümkün olmalıdır. aşağıdaki komutları çalıştırdıktan sonra:
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;
Sonra belgelerini kontrol: C: Mevcut \ ProgramData \ MySQL \ MySQL (Windows üzerinde) Sunucu 5.5 \ data \ testi ve dosyaları edildi:
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.
Geçici tablolar C: \ Windows \ Temp'de saklanır ve sıra dışı isimlere sahiptir, ancak dahili olarak veriler aynı şekilde saklanır.
#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.
Ve 'karadelik' motorunu belirtirseniz, özel aygıtta saklanır:/dev/null. – Johan
Peki, geçici tabloya yalnızca bir bağlantı tarafından erişilebildiğinden, diskte 'temp_table_innodb' olarak adlandırılmayacaktır, çünkü db'ye iki ayrı bağlantı yaparsanız ve her biri ile geçici bir tablo yaparsanız, bunları çağırabilirsiniz. Aynı şey ve birbirleriyle çarpışmayacaklar. Bütün bunların, hafızada mı yoksa diskte mi olduğu hakkında hiçbir fikrim yok. Tahmin ederim, ama sanırım yanlış tahmin edemem, o yüzden yapmayacağım. – Kenny
@Kenny: Onları temp klasöründe buldum (tabiki!). Güncellenmiş cevaba bakınız. –