Ihre beste Leistung erzielen Sie, wenn Sie Ihre "Tests" in die SQL-Logik selbst codieren können, sodass Sie alles auf eine Handvoll UPDATE-Anweisungen reduzieren können. Oder zumindest so viele wie möglich auf diese Weise erledigen, sodass weniger Zeilen einzeln aktualisiert werden müssen.
Zum Beispiel:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
Sie beschreiben nicht viel über Ihre Tests, daher ist es schwer sicher zu sein. Aber normalerweise können Sie mit ein wenig Arbeit ziemlich viel Logik in Ihre WHERE-Klausel einbauen.
Eine andere Möglichkeit wäre, Ihre Logik in eine gespeicherte Prozedur zu packen. Sie werden immer noch 350.000 Updates durchführen, aber zumindest gehen nicht alle "über die Leitung". Ich würde dies jedoch nur als letzten Ausweg verwenden; Die Geschäftslogik sollte nach Möglichkeit in der Anwendungsschicht gehalten werden, und gespeicherte Prozeduren machen Ihre Anwendung weniger portabel.