A tabela temporária pode não ser a melhor opção dependendo do que você está tentando alcançar... Pode ser útil criar uma tabela com alguma consolidação de dados para restringir o escopo das próximas solicitações, mas raramente é eficiente fazê-lo.
Além disso, as tabelas temporárias não podem ser acessadas várias vezes, portanto, seria necessária uma tabela real.
A criação de uma tabela requer gravações em disco, o que é muito menos eficiente do que uma seleção pura na RAM. Usando métodos de cache, você pode recuperar o resultado de uma seleção anterior muito rapidamente. Você pode usar essa seleção como a parte FROM de suas consultas para torná-la mais rápida do que agrupar em um banco de dados enorme. Mas mesmo assim...
Estamos evoluindo em um conjunto de dados de aproximadamente 1To, grandes consultas são produtos encontrados de acordo com os direitos dos usuários (categoria, loja,...) tentamos criar uma tabela para cada usuário apontando para os produtos sobre os quais ele tem direitos e em seguida, use essa tabela para recuperar os dados sem exigir grandes condições, mas ainda era lento usando o SSD. Então, acabamos de despejar uma enorme RAM no servidor e o SELECT que teríamos usado para preencher as tabelas temporárias é executado para cada usuário no login e, em seguida, usado como FROM e tudo está perfeito.