Side question. Have you tried having the records calculate in the query themselves at least partially? Best case scenario would be have them process into another table directly. Writing those 12k records back would be more intensive if they had to process each one separately.
-Mark