Din bedste præstation vil være, hvis du kan kode dine "tests" ind i selve SQL-logikken, så du kan koge alt ned til en håndfuld UPDATE-sætninger. Eller i det mindste få lavet så mange som muligt på den måde, så færre rækker skal opdateres individuelt.
For eksempel:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
Du beskriver ikke meget om dine tests, så det er svært at være sikker. Men du kan typisk få ret meget logik ind i din WHERE-klausul med lidt arbejde.
En anden mulighed ville være at sætte din logik ind i en lagret procedure. Du vil stadig lave 350.000 opdateringer, men i det mindste "går de ikke alle sammen". Jeg ville dog kun bruge dette som en sidste udvej; forretningslogik bør bevares i applikationslaget, når det er muligt, og lagrede procedurer gør din applikation mindre bærbar.