Bu kaç adet şehir olduğuna, mysql optimizasyonuna göre değişir.
Örneğin bir txt içerisinde alt alta şehir listesi varsa bu mysql txtye oranla daha hızlı ve doğru bir çözüm olabilir.
Performans konusunda tam doğru bilgiye sahip olduğumu söyliyemem bu işlem için ama.
TXT tarafında bu işlemi yapabilmeniz için tüm satırları diziye alıp o dizinden random seçip yapmanız gerekir. Ancak mysqlde rand() limit 1 uygulanarak tek veri random olarak çekilir.
Ayrıca txt satırlı veride seçilen şehiri silip dosyayı geri kaydetmelisiniz.