Que sin conocer detalles es difícil aconsejarte.
Cita: es para evitar hacer una consulta y sobre el resultado recorrer cada fila por php preguntando por su ciudad.
Si en una consulta obtienes las ciudades, y en la otra las personas... sig sin entender por qué no haces un JOIN para obtener las dos cosas en una misma consutla.
Cita: Simplemente porque pense que era mas lento esto que hacerlo con un cursor...
Como ya te dije, no puedes manejar cursores en una consulta. Eso no existe en MySQL.
Y de todos modos sólo tiene sentido si vas a realizar acciones iterativas. En MySQL lo que quieres hacer se hace más simple por medio de tablas de tipo temporary.