我有一个包含 250 万行的表,每行都有一个 xml 类型的列。当消息到达另一个队列(触发队列)时,所有记录都应该被删除并排入 sqlserver 服务代理队列。性能非常重要,现在它太慢了。实现这一目标的最佳方法是什么?
目前我们在 triggerqueue 上使用一个激活的 sp,它在 while(@message <> null) 循环中执行:
begin transaction
delete top (1) from table output @tempTable
select top 1 @message = message from @tempTable
send on conversation @message
commit transaction
有没有更快的方法来解决这个问题?
顺便说一句:在有人问之前:我们需要从表开始,因为它填充了之前计算的合并语句的输出