Xml

SQL Server XML 插入優化?

  • April 23, 2014

我有一個 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

謝謝,埃里克

引用自:https://dba.stackexchange.com/questions/9564