Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 加速插入_Sql_Sql Server - Fatal编程技术网

Sql 加速插入

Sql 加速插入,sql,sql-server,Sql,Sql Server,我想加快插入速度。如果我注释掉insert行,那么查询需要几秒钟,但是如果我添加insert时,它似乎每分钟只处理大约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 (defaul

我想加快插入速度。如果我注释掉insert行,那么查询需要几秒钟,但是如果我添加insert时,它似乎每分钟只处理大约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
这是我正在使用的测试文件:

下面是如何加载文件的代码:

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)

dbo.xmltest
是否有许多索引或触发器?其他用户是否同时访问该表?如果用表变量替换它会发生什么?这会加快速度吗?您在SqlServer2008上吗?看看这里(),可能你也有类似的问题。@i-one圣牛,谢谢!这确实是个问题,但是我在2008 R2 SP1上。有什么好处?据说是固定在那个版本上的。当我更改为“选择到”时,只需几秒钟即可运行。如果你提交答案,我将把它标记为完整。