最高のパフォーマンスは、「テスト」をSQLロジック自体にエンコードできる場合です。これにより、すべてを少数のUPDATEステートメントにまとめることができます。または、少なくともその方法でできるだけ多くのことを実行して、個別に更新する必要のある行を少なくします。
例:
UPDATE tablename set firstname = [some logic]
WHERE [logic that identifies which rows need the firstname updated];
あなたはあなたのテストについてあまり説明していないので、確信するのは難しいです。ただし、通常、少しの作業でWHERE句にかなり多くのロジックを組み込むことができます。
もう1つのオプションは、ロジックをストアドプロシージャに入れることです。引き続き350,000の更新を実行しますが、少なくともすべてが「ネットワークを通過」しているわけではありません。ただし、これは最後の手段としてのみ使用します。ビジネスロジックは可能な限りアプリケーション層に保持する必要があり、ストアドプロシージャを使用すると、アプリケーションの移植性が低下します。