Mucho, definitivamente, por favor, usa el segundo método... IE recorrer los registros y actualizar.
Breve razón para no usar tablas temporales:
- Si está utilizando una tabla temporal de MySQL, es visible para la sesión actual; que en realidad podría ser compartido por varias sesiones si está utilizando conexiones persistentes. Si ejecuta el script dos veces al mismo tiempo, podría dañar algunos datos. Lo mismo se aplica a la creación de tablas reales.
Lo que debes hacer es:
- Recupere todos sus datos, o al menos recupérelos en lotes lógicos (en este caso, podría hacerse recuperando solo filas de una "colección" en particular, por ejemplo, frutas)
- Ordene las filas (esto también podría haberse hecho previamente dentro de la consulta SQL)
- Actualice las filas usando un contador, exactamente como ha propuesto