Las tablas temporales a menudo son valiosas cuando tiene un SELECT bastante complicado que desea realizar y luego realiza un montón de consultas sobre eso...
Puedes hacer algo como:
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;
Y luego haga un montón de consultas contra myTopCustomers sin tener que hacer uniones a compras y artículos en cada consulta. Luego, cuando su aplicación ya no necesite el identificador de la base de datos, no es necesario realizar ninguna limpieza.
Casi siempre verá tablas temporales utilizadas para tablas derivadas que fueron costosas de crear.