そのため、問題について多くの検索と検討を行った後、シュレッダーを実行するストアドプロシージャを再設計しました。ストアドプロシージャに渡される変数を細断処理する代わりに、XML列自体から細断処理しました。これにより、一度に1つずつストアドプロシージャにループして渡すのではなく、一度に多くのXML値を細断処理することができました。これにより、私が探していたパフォーマンスが向上しました。だからこのようなものの代わりに...
SET @xmlData = CAST(@xmlMessageData AS XML)
SELECT
, row.value('xmlNode1[1]', 'BIT' ) AS Column1
, row.value('xmlNode2[1]', 'NVARCHAR(255)') AS Column2
, row.value('xmlNode3[1]', 'BIT' ) AS Column3
, row.value('xmlNode4[1]/Name[1]', 'NVARCHAR(255)' ) AS Column4
FROM @xmlData.nodes('xmlRootNode') AS T1(row)
私は今これをします...
SELECT
, row.value('xmlNode1[1]', 'BIT' ) AS Column1
, row.value('xmlNode2[1]', 'NVARCHAR(255)') AS Column2
, row.value('xmlNode3[1]', 'BIT' ) AS Column3
, row.value('xmlNode4[1]/Name[1]', 'NVARCHAR(255)' ) AS Column4
FROM [ESBMessagesData] D
CROSS APPLY
[DataItem].nodes('xmlRootNode') AS T1(row)