Di recente mi sono imbattuto in un problema simile in cui CREATE TEMPORARY TABLE ha avuto un costo significativo a causa del continuo riutilizzo. Ho anche usato la soluzione descritta da Barranka (creare una volta e troncare al termine o prima del riutilizzo).
Per aumentare ulteriormente le prestazioni ho utilizzato le tabelle InnoDB create su un disco RAM (ramfs). Ciò offre tutti i vantaggi del motore di archiviazione InnoDB con un costo IO minimo. Questa è una soluzione migliore rispetto all'utilizzo del motore di archiviazione MEMORY che, secondo il supporto Oracle, è disponibile solo per applicazioni legacy e non è stato migliorato o esteso per diverso tempo.