Veamos, el stock es básicamente descontar una cantidad de un campo, algo que lo hace automáticamente un trigger. Algo debe no estar haciéndose bien si dices que se ralentiza el sistema.
En cuanto al bucle que indicas tendrás que probarlo, pero así a simple vista no tiene buena pinta
, quiero decir que lo veo innecesario. Yo comprobaría qué es lo que realmente es lento en el sistema para solucionarlo.
Porque si estamos hablando de unos cientos de artículos y una decena de puestos de trabajo... eso es una carga inapreciable para una base de datos como firebird o similar.