Дорон, чтобы выполнить то, что вы хотите сделать, можно сделать только с помощью транзакции. Я не понимаю, почему вы говорите, что транзакция приводит к снижению производительности, это совершенно неверное утверждение. Если вы не имеете в виду, что ваша транзакция занимает, например. 10 секунд, и в эти 10 секунд другие транзакции блокируются.
Теперь я регулярно работаю и проектирую базы данных, которые должны выдерживать около 80 000 транзакций в секунду, и благодаря этому вы изучите несколько приемов. Я бы посоветовал вам сделать шаг назад и переоценить архитектуру запросов и таблиц, и если это база данных с высокой степенью транзакций, первое, что я предлагаю, - это избавиться от любых ограничений внешнего ключа, то есть производительности. удар по любой транзакционной БД.
Другое дело, чтобы посмотреть на индексы, у вас есть правильные индексы, и, возможно, вы переиндексируете таблицы, которые нужно вставлять и обновлять? Это может вызвать сильные перфорированные удары!
Может быть, я могу предложить, если вы не можете перепроектировать таблицы и т. Д., Подумайте немного нестандартно, возможно, выберите нужные данные (с помощью nolock) во временные таблицы, а затем выполните объединения и т. Д.
Возможно, если вы дадите мне более конкретный пример, я смогу помочь больше.
Но пока скажи мне, что ты можешь и не можешь сделать. Надеюсь, это поможет!