我有一个传递给存储过程的大型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)  

谢谢您的帮助!

#1楼 票数:0 已采纳

试试这个,对您来说可能会更快。

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)  

  ask by qminator translate from so

未解决问题?本站智能推荐:

3回复

是否可以了解WPF窗口或页面控件的加载完成时间?

我正在使用WPF浏览器应用程序。 我想知道如何理解页面的加载完成时间,并显示组件开始加载大量后台服务。 否则,我只会看到几秒钟的白页,直到所有服务都加载完毕。 这是我尝试过的事情: 但是,直到page_loaded中的进程完成后,页面组件才会加载到页面中。 如果没有在page
1回复

XBAP无法在IE10中启动

我创建了一个简单的XBAP WPF应用程序,但是当我尝试浏览它时,出现此错误: 我正在本地调试它,但收到此错误。 我在Win Server 2012上运行。有人可以帮助我解决此问题吗?
2回复

如何在C#中关闭窗口

我在窗口B中获得以下代码,该窗口是从窗口A在其自己的线程中启动的。 当我关闭窗口A时,窗口B仍保留在内存中,应用程序未处理。 关闭窗口A时,我应该如何确保已关闭应用程序。 编辑:窗口B需要花费一些时间来加载和构建,这就是其中存在代码的原因。
1回复

通过HostScript在XBAP中访问部分信任的JavaScript对象:回调中的SecurityException

我在WPF 4中遇到了XBAP脚本互操作功能的问题,它涉及以下各项的组合: 从.NET访问脚本对象的成员 在从JavaScript调用的回调中运行.NET代码 以部分信任运行 这似乎是“任意选择两个”方案...如果我尝试完成所有这三个操作,则会收到Securit
1回复

xbap与独立应用程序中的Listview导航行为

我有一个包含列表视图的WPF应用程序。 当应用程序独立运行时,我可以使用键盘上的向上箭头和向下箭头键浏览列表。 当将应用程序部署为XBAP并在浏览器窗口中运行时,我也可以这样做,但是例如当我到达顶部元素并再按一次向上箭头键时,焦点就会跳到浏览器中的网址栏。 有谁知道是否有防止这种情况的
1回复

我可以在不使用OpenFileDialog的情况下读取目录中的文件吗?

我有一个应用程序,我认为WPF XBAP应用程序最适合这个。 但是,我不知道它带来的限制。 因此,在选择此工具之前,我需要了解它。 基本上我想读取操作系统内的任何文件夹,并获取该文件夹中的文件列表。 这是否可以使用WPF XBAP?
2回复

在浏览器中运行WPF应用程序

我的应用程序是用WPF编写的。 现在,我想让它在浏览器中运行,所以我已经阅读了它,我知道XBAP是我的解决方案。 我的问题是什么? 它不会在我的电脑上运行。 我检查了每个流行的浏览器(chrome,FF,IE,opera),什么都没有。 浏览器无法处理.xbap文件并只下载它。
1回复

无法在visual studio中构建特定于平台的XAML浏览器应用程序

我正在尝试通过将平台目标设置为x86来构建XBAP,并且我收到以下错误。 无法构建特定于平台的XAML浏览器应用程序。 如果HostInBrowser属性设置为“True”,则不要设置PlatformTarget属性或将其设置为“AnyCpu” 是否有任何理由禁用此功能?