Me deparei com um problema semelhante recentemente, onde o CREATE TEMPORARY TABLE teve um custo significativo devido à reutilização contínua. Também usei a solução que Barranka descreve (criar uma vez e truncar quando terminar ou antes de reutilizar).
Para aumentar ainda mais o desempenho usei tabelas InnoDB que foram criadas em um disco RAM (ramfs). Isso oferece todos os benefícios do mecanismo de armazenamento InnoDB com muito pouco custo de E/S. Esta é uma solução melhor do que usar o mecanismo de armazenamento MEMORY que, de acordo com o suporte da Oracle, está disponível apenas para aplicativos legados e não foi aprimorado ou estendido por algum tempo.