0

我正在使用存储过程。 它使用视图并将结果集表转换为XML格式。 我们使用了'FOR XML AUTO,ROOT('toxicsite'),TYPE'语句。 该视图正在返回14k条记录,并在其转换为XML之后...需要2分钟。 需要另一种替代方案的帮助或我如何能够优化查询转换使用FOR XML AUTO,ROOT('RootName'),TYPE为14K记录会使SQL查询变慢

+0

只是为了正确地得到这样的:查询运行没有'FOR XML'是速度不够快,但是当你添加'为它XML'缓慢完成?你如何衡量时间?你在用XML做什么? 14k记录相当多。 XML不是为更大的数据而设计的...... – Shnugo

+0

是的......如果我从视图中获取数据,它会在17秒内返回(14k记录)。但是如果我应用ForXML ......它是一个需求..我把这个XML发送到API进一步处理。 –

回答

0

我刚刚尝试过这个简单的SELECT TOP 14000 * FROM SomeBigTable。 SSMS在2秒后准备就绪。与FOR XML AUTO它返回相当一样快。我不认为,这创造了XML正在很久......

如果您VIEW是非常复杂的可能是,这是AUTO欺骗了你。 AUTO试图找到您所查询(相关数据的嵌套)

作为快速射击你可以尝试FOR XML RAW,TYPE只是为了检查的性能差异适当的内部结构。最好是用FOR XML PATH明确的方法,你可以自己指定嵌套和关系。

如果有涉及(VARBINARY数据)的BLOB,你有这样的转换为base64的额外费用,如果涉及许多字符串,特别是如果他们有很多非拉丁人物,你有额外的实体编码的成本...

一般XML是惊人的快...