[英]XML taking to long to parse in MSSQL
我有一个传递给存储过程的大型xml流,但是在xml的特定部分上却得到了将近1.30分钟的长响应时间,这在很多情况下都会重复出现。
我已经检查了执行计划,并且xml结构的2个部分几乎占用了所有处理时间。 在插入之前,我还尝试过先将其读入2个临时表中,但这并没有帮助。 XML的大小为368Kb,因此我非常怀疑我的xml不稳定,或者我缺少帮助简化解析的内容。
有没有更好的方式来表示xml,从而使Xpath()解析起来更容易? 我真的不知道该怎么办。
xml的结构为:
<root>
<someobject>
<param1></param1>
<param1></param1>
</someobject>
<somethingelse>
<param1></param1>
<param1></param1>
</somethingelse>
<row1>
<param1></param1>
<param1></param1>
<param1></param1>
<param1></param1>
<param1></param1>
<param1></param1>
<param1></param1>
<param1></param1>
</row1>
我当前使用的查询:
Insert Into [Table]
Select
XmlParam.Doc.value('fieldA[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldB[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldC[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldD[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldE[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldF[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('fieldG[1]','bit')
,XmlParam.Doc.value('fieldH[1]','bit')
From @Xml.nodes('//Flow/StepData') XmlParam(Doc)
谢谢您的帮助!
试试这个,对您来说可能会更快。
Select
XmlParam.Doc.value('(fieldA/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldB/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldC/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldD/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldE/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldF/text())[1]','UNIQUEIDENTIFIER')
,XmlParam.Doc.value('(fieldG/text())[1]','bit')
,XmlParam.Doc.value('(fieldH/text())[1]','bit')
From @Xml.nodes('//Flow/StepData') XmlParam(Doc)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.