FOR存储过程中的XML AUTO

时间:2009-09-15 04:49:15

标签: sql sql-server xml tsql

将FOR XML AUTO查询存储过程并使用ExecuteXmlReader检索数据以设置业务对象导致任何性能损失?

2 个答案:

答案 0 :(得分:2)

我不知道性能,但我已经开始这样做以便利用序列化,所以我可以将BLL类型作为泛型直接传递给DAL进行填充,我非常喜欢它。它绕过Linq或键入的DataSet,并使用更少的代码,无论是否为机器生成。至于性能,最好的办法是运行自己的测试。

更新:如果您要使用FOR XML序列化为BLL对象,请不要使用auto,使用PATH,并指定root的名称,否则将使用< row />作为根元素。

答案 1 :(得分:0)

如果要检索的数据量相对较高(XML格式大于TDS行集),肯定会影响性能。我没有与我确切的统计数据。但是,无论是否使用XML AUTO,tou都可以轻松地查询您的查询并查找事实。但是,XML AUTO肯定比普通的SQL查询花费更多的时间。

我认为在应用程序代码中将记录集转换为XML格式比在sql server中执行它更可取。

修改

T-SQL commands vs. XML AUTO in SQL Server - 本文解释并给出了XML自动和普通T-SQL查询之间的比较,看看这个。

作者得出结论“T-SQL查询的表现似乎与其他查询一致。XML查询FOR XML AUTO使用的CPU数量增加了8倍以上,但I / O数量相同复杂的XML命令发出的读取次数比T-SQL命令多80倍(!),写入次数也超过CPU的六倍。“