【问题标题】:Use of FOR XML AUTO, ROOT('RootName'), TYPE for 14K records makes SQL Query slow对 14K 记录使用 FOR XML AUTO, ROOT('RootName'), TYPE 会使 SQL Query 变慢
【发布时间】:2017-04-20 12:22:48
【问题描述】:

我正在研究存储过程。 它使用视图并将结果集表转换为 XML 格式。 我们使用了语句'FOR XML AUTO, ROOT('toxicsite'), TYPE'。 视图将 14k 记录返回给我,并在其转换为 XML 之后......这需要 2 分钟。 需要其他替代方法或如何优化查询转换的帮助

【问题讨论】:

  • 只是为了正确理解这一点:没有FOR XML 的查询运行速度足够快,但是当您添加FOR XML 时它会变慢吗?你是如何测量时间的?你在用 XML 做什么? 14k 记录是相当多的。 XML 不是为更大的数据设计的...
  • 是...如果我从视图中获取数据,它将在 17 秒内返回(14k 记录)。但是如果我应用 ForXML... 这是一个要求.. 我将此 XML 发送到 API 以进行进一步处理.

标签: xml performance sql-server-2012 query-performance for-xml-path


【解决方案1】:

我只是用一个简单的SELECT TOP 14000 * FROM SomeBigTable 尝试了这个。 SSMS 在 2 秒后准备就绪。使用FOR XML AUTO,它返回的速度也很快。我不认为,创建 XML 需要那么长时间...

如果您的VIEW 非常复杂,那可能是AUTO 在欺骗您。 AUTO 尝试为您的查询找到合适的内部结构(相关数据的嵌套)

作为速成,您可以尝试FOR XML RAW,TYPE 来检查性能差异。 Best 是使用 FOR XML PATH 的显式方法,您可以在其中自己指定嵌套和关系。

如果涉及 BLOB(VARBINARY 数据),如果涉及的字符串很多,特别是如果它们有很多 非拉丁 em> 个字符,你有实体编码的额外成本......

一般来说,XML 速度快得惊人...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2013-01-07
    • 2021-09-21
    • 1970-01-01
    相关资源
    最近更新 更多