Триггеры работают со всей партией записей, которые вставляются или обновляются, а не по одной строке за раз.
Если расчеты занимают слишком много времени только с несколькими сотнями новых записей, то, вероятно, сам расчет необходимо настроить на производительность.
Если вы выполняете вычисления в триггере, то они являются частью каждой транзакции и завершатся до того, как будет разрешена другая транзакция, что может замедлить вставки. Если вы правильно напишите триггер, чтобы иметь дело с наборами данных, а не строка за агонизирующей строкой, это, вероятно, не вызовет проблемы. Сотни рядов - тривиальная сумма для выполнения большинства расчетов. Если бы вы вставляли миллионы строк в пакет, я бы больше беспокоился о производительности триггера, влияющей на другие процессы.
Вы можете создать процедуру для выполнения вычислений и запланировать ее выполнение каждые десять минут или около того, а затем снова запускать при вызове отчета. Таким образом, он может выполнить большую часть предварительного расчета заранее и просто поймать последние пару новых записей во время отчета.
Дайте нам пример расчета и потенциального триггера, и мы сможем вам лучше помочь.
Невозможно сгруппировать группу, если отдельные транзакции выполняются в одном групповом триггере. Возможно, вам следует прекратить использовать LINQ для этого и отправлять сообщения, если вам нужны пакеты для совместной обработки. Операции на основе множества обычно предпочтительнее, если вы работаете с несколькими записями одновременно.