Muito, definitivamente, por favor, use o 2º método... I.E. percorrer os registros e atualizar.
Razão rápida para não usar tabelas temporárias:
- Se você estiver usando uma tabela temporária do MySQL, ela ficará visível para a sessão atual; que pode ser compartilhado por várias sessões se você estiver usando conexões persistentes. Se você executar o script duas vezes ao mesmo tempo, poderá causar alguma corrupção de dados. O mesmo se aplica à criação de tabelas reais.
O que você deve fazer é:
- Recupere todos os seus dados, ou pelo menos recupere-os em lotes lógicos (neste caso, isso pode ser feito recuperando apenas as linhas de uma "coleção" específica, por exemplo, frutas)
- Ordenar as linhas (isso também pode ter sido feito anteriormente na consulta SQL)
- Atualize as linhas usando um contador, exatamente como você propôs