Najlepszą wydajność uzyskasz, jeśli będziesz w stanie zakodować swoje „testy” w samej logice SQL, dzięki czemu będziesz mógł wszystko sprowadzić do kilku instrukcji UPDATE. Lub przynajmniej zrób w ten sposób jak najwięcej, aby mniej wierszy musiało być aktualizowanych pojedynczo.
Na przykład:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
Niewiele opisujesz o swoich testach, więc trudno mieć pewność. Ale zazwyczaj możesz wprowadzić sporo logiki do swojej klauzuli WHERE przy odrobinie pracy.
Inną opcją byłoby umieszczenie logiki w procedurze składowanej. Nadal będziesz robić 350 000 aktualizacji, ale przynajmniej nie wszystkie „przechodzą przez drut”. Używałbym tego jednak tylko w ostateczności; Logika biznesowa powinna być przechowywana w warstwie aplikacji, gdy tylko jest to możliwe, a procedury składowane sprawiają, że Twoja aplikacja jest mniej przenośna.