250 万行を含むテーブルがあり、各行には xml 型の列が 1 つあります。メッセージが別のキュー (トリガーキュー) に到着したときに、すべてのレコードを削除して sqlserver サービス ブローカー キューに入れる必要があります。パフォーマンスは非常に重要ですが、今では遅すぎます。これを達成するための最良の方法は何ですか?
現在、while(@message <> null) ループで実行するトリガーキューでアクティブ化された sp を使用します。
begin transaction
delete top (1) from table output @tempTable
select top 1 @message = message from @tempTable
send on conversation @message
commit transaction
この問題に取り組むためのより速い方法はありますか?
ところで: 誰かが尋ねる前に: テーブルから始める必要があります。これは、以前に計算されたマージ ステートメントからの出力で満たされているためです。