Xml
SQL Server XML 插入優化?
我有一個 400k XML 文件試圖插入到一個 86 列的 SQL Server 2008 表中。使用以下程式碼將該 XML 放入臨時表大約需要 35 分鐘:
with XmlNamespaces ( 'urn:xpaykj-report-xml-1.0' as xkj) Select xItem.value('declare namespace xkj="urn:xpaykj-report-xml-1.0"; (xkj:prop[@idx=1]) [1] ','Date') as [InputDate] -- and then 85 other columns -- Into #loadtemp From @xmldoc.nodes('xkj:output-data/xkj:childs/xkj:child[@name="output"]/xkj:childs/xkj:child[@name="lvla"]/xkj:childs/xkj:child[@name="lvlb"]/xkj:childs/xkj:child[@name="lvlc"]/xkj:properties') as x(xItem)
我需要優化…一些東西。但我不確定是什麼。誰能幫我出主意?
謝謝。
可以分兩次嗎?首先,將數據分解為 XML 行,然後從行中讀取列。就像是:
with XmlNamespaces ( 'urn:xpaykj-report-xml-1.0' as xkj) Select xItem.query('.') as RowXML Into #loadtemp From @xmldoc.nodes('xkj:output-data/xkj:childs/xkj:child[@name="output"]/xkj:childs/xkj:child[@name="lvla"]/xkj:childs/xkj:child[@name="lvlb"]/xkj:childs/xkj:child[@name="lvlc"]/xkj:properties') as x(xItem)
應該給你 XML 行;然後應用您的價值陳述將表格分解成列。
儘管答案取決於 SQL 正在做什麼,但我一直使用此白皮書在 SQL Server 中調整我的 XML XPath,結果非常好。使用某些技術,其中一些技術已經產生了 100 到 1000 倍的速度提升。我強烈推薦它用於調整以下情況:
http://msdn.microsoft.com/library/ms345118
謝謝,埃里克