Performa terbaik Anda adalah jika Anda dapat menyandikan "tes" Anda ke dalam logika SQL itu sendiri, sehingga Anda dapat meringkas semuanya menjadi beberapa pernyataan UPDATE. Atau setidaknya lakukan sebanyak mungkin dengan cara itu, sehingga lebih sedikit baris yang perlu diperbarui satu per satu.
Misalnya:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
Anda tidak menjelaskan banyak tentang tes Anda, jadi sulit untuk memastikannya. Tapi Anda biasanya bisa mendapatkan cukup banyak logika ke dalam klausa WHERE Anda dengan sedikit kerja.
Pilihan lain adalah memasukkan logika Anda ke dalam prosedur tersimpan. Anda masih akan melakukan 350.000 pembaruan, tetapi setidaknya tidak semuanya "melalui kabel". Saya akan menggunakan ini hanya sebagai pilihan terakhir; logika bisnis harus disimpan di lapisan aplikasi bila memungkinkan, dan prosedur tersimpan membuat aplikasi Anda kurang portabel.