为了增加你的XML性能的目的,你可以创建一个主XML索引则价值的次级指标。看到https://msdn.microsoft.com/en-us/library/bb934097.aspx
下面是代码示例:
Create table XmlTest
(
id int NOT NULL IDENTITY(1,1) CONSTRAINT PK_XmlTest_XmlData PRIMARY kEY,
XmlData xml
)
GO
Create primary Xml index IX_XML_Primary ON dbo.XmlTest(XmlData);
GO
Create xml index IX_XmlData_Secondary_Value ON dbo.XmlTest(XmlData)
USING XML INDEX IX_XML_Primary
FOR VALUE;
GO
此外,对于XML查询的SQL Server消耗了大量的查询计划生成的CPU资源的,所以我建议你使用sp_executesql的存储过程,并使用查询选项KEEPFIXED PLAN。这将避免SQL重新计划为不同的价值和statictics更新。
下面是代码示例:
Declare @Query nvarchar(max);
Declare @QueryParemeters nvarchar(max);
Set @QueryParameters = '@In_NewValue nvarchar(max),@In_OldValue nvarchar(max)'
Set @Query ='UPDATE table1
SET xmlcol.modify(''replace value of (/Root/Tag/text())[1]
with sql:variable("@In_NewValue")'')
WHERE xmlcol.value(''(/Root/Tag/text())[1]'',''VARCHAR(100)'') = @In_OldValue OPTION (KEEPFIXED PLAN)'
exec sp_executesql @[email protected],@[email protected],@[email protected],@[email protected]
希望它能帮助。
这怎么列的内容看?需要多少时间?它多久需要运行一次? – Tomalak
与例如添加XML – Backs