Le tabelle temporanee sono spesso utili quando si desidera eseguire una SELECT abbastanza complicata e quindi eseguire una serie di query su quella...
Puoi fare qualcosa come:
CREATE TEMPORARY TABLE myTopCustomers
SELECT customers.*,count(*) num from customers join purchases using(customerID)
join items using(itemID) GROUP BY customers.ID HAVING num > 10;
E poi esegui una serie di query su myTopCustomers senza dover eseguire unioni per acquisti e articoli su ciascuna query. Quindi, quando la tua applicazione non ha più bisogno dell'handle del database, non è necessario eseguire alcuna pulizia.
Quasi sempre vedrai tabelle temporanee usate per tabelle derivate che erano costose da creare.