我们应该使用带有表参数的单个执行存储过程还是带有分离参数的多个执行过程?

时间:2017-06-17 07:54:02

标签: c# sql performance stored-procedures processing-efficiency

我正在研究WinForms桌面应用程序。在这个应用程序上,我必须对SQL Server数据库进行一些更新。我可以使用表参数

的存储过程来完成此操作
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue("@changes", changes.ToTable(false, "ItemNo", "Info"));

并执行一次程序,或者使用循环执行多次过程并使用字符串参数。

for (...)
{
   ...
   comm.CommandType = CommandType.StoredProcedure;
   comm.Parameters.AddWithValue("@Item", "Item 1"));`
   comm.Parameters.AddWithValue("@Info", "Info 1"));`
   int i = comm.ExecuteNonQuery();
   ...
}

这是最好的做法吗?

1 个答案:

答案 0 :(得分:1)

即使您执行简单的<!DOCTYPE html> <html> <body> <script> (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.com/en_US/messenger.Extensions.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'Messenger')); window.extAsyncInit = function() { // the Messenger Extensions JS SDK is done loading alert("This alert isnt being executed in webview or chrome mobile"); MessengerExtensions.getUserID(function success(uids) { // User ID was successfully obtained. var psid = uids.psid; }, function error(err, errorMessage) { // Error handling code }); }; </script> <h1> Basic Text </h1> </body> </html>' 操作,我也会使用第一种方法并将所有数据作为表类型变量发送。

因为在这种情况下,您可以通过使用表类型变量执行UPDATE来执行update-join,并且可以一次更新多个记录。至少,您将保存对数据库的多个调用。