この挿入を高速化したいと思います。挿入行をコメントアウトすると、クエリに数秒かかりますが、挿入を追加すると、1 分間に約 100 行しか処理されないように見えます。これをスピードアップするにはどうすればよいですか?
DECLARE @XML AS XML, @hDoc AS INT
SELECT @XML = XMLData FROM InventoryStockXML WHERE id =1 --1st row
EXEC sp_xml_preparedocument @hDoc OUTPUT, @XML
;With xmlnamespaces (default 'http://www.epicor.com/Mfg/100')
INSERT INTO dbo.xmltest (PartNum,WarehouseCode,OnhandQty,Date_Value,Plant)
Select
N.value('PartNum[1]', 'varchar(50)') PartNum,
N.value('WarehouseCode[1]', 'varchar(10)') WarehouseCode,
N.value('OnhandQty[1]', 'decimal(22,8)') OnhandQty,
Convert(date,CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GETDATE())-1),GETDATE()),101)) AS Date_Value,
@xml.value('(/ReportDataSet/Plant/Plant)[1]', 'varchar(20)') Plant
from
@xml.nodes('/ReportDataSet/StkPart') as T(n)
EXEC sp_xml_removedocument @hDoc --takes it out of memory
GO
これが私が使用しているテストファイルです: http://wikisend.com/download/637998/Test.XML
以下は、コードがファイルをロードする方法です。
DECLARE @SQL1 NVARCHAR (MAX),@xmlFileName1 VARCHAR(300)
select @xmlFileName1 = 'C:\XMLInventoryFiles\Stock\Test.XML'
set @sql1 ='
INSERT INTO InventoryStockXML(XMLData, LoadedDateTime)
SELECT CONVERT(XML, BulkColumn) AS XMLData, GETDATE() XMLDate
FROM OPENROWSET(BULK ''' + @xmlFileName1 + ''', SINGLE_BLOB) AS x'
execute (@sql1)