Най-добрата ви производителност ще бъде, ако можете да кодирате вашите "тестове" в самата SQL логика, така че можете да сведете всичко до шепа оператори UPDATE. Или поне направете възможно най-много по този начин, така че по-малко редове да трябва да се актуализират поотделно.
Например:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
Не описвате много за вашите тестове, така че е трудно да сте сигурни. Но обикновено можете да вкарате доста логика в клаузата си WHERE с малко работа.
Друг вариант би бил да поставите логиката си в съхранена процедура. Все още ще правите 350 000 актуализации, но поне не всички "минават през жицата". Бих използвал това само в краен случай; бизнес логиката трябва да се съхранява в слоя на приложението, когато е възможно, а съхранените процедури правят приложението ви по-малко преносимо.