【发布时间】:2017-12-06 20:10:35
【问题描述】:
我试图以最有效的方式将一千行从 c++ 应用程序中的 xml 对象传递到 sqlserver 存储过程。在将 xml 元素插入数据库之前,需要对其进行一些字符串处理/转换。目前,我们正在获取 C++ 应用程序中的每个单独的 xml 节点,然后调用 sqlserver 将其插入(并且这样做一千次)。为了改善这一点,我想同时将所有 1000 条记录发送到 sqlserver。最快的方法是什么?
另外,我已经看到我可以将 xml 直接发送到存储过程,但这需要我在将数据插入数据库之前对数据进行大量处理。在 C++ 应用程序中处理字符串然后通过 xml 发送或在未处理的 xml 中将其发送到 SQLServer 然后处理/转换字符串是否更有效,还是有另一种方法来完全传递数据?
【问题讨论】:
-
我还应该说,由于这个过程可以同时调用 100,000 次,因此需要稍微提高性能。
-
在插入过程中使用 BULK INSERT 或使用表值参数。
-
那么将C++端的xml转换成表值参数然后传递过来,比在sqlserver端进行xml解析和字符串处理要快吗?
-
不可能肯定地说明这一点,因为我不知道您的数据是什么或需要进行多少处理,但 sql server 不太擅长字符串操作。如果在 sql 中执行速度更快,我会感到惊讶。但绝对最好的了解方法是构建它并尝试两种方式。
-
在 C++ 中使用表值对有什么好的例子吗?
标签: c++ sql-server xml performance stored-procedures