我正在执行如下所示的循环插入(方法 A),似乎用每个循环调用数据库并不是一个好主意。我发现另一种方法是在我的 SProc 中循环一个逗号分隔的字符串,而不是执行插入操作,以便只有一个数据库条目。在性能方面会有任何显着改善吗?:
方法一:
foreach (DataRow row in dt.Rows)
{
userBll = new UserBLL();
UserId = (Guid)row["UserId"];
// Call userBll method to insert into SQL Server with UserId as one of the parameter.
}
方法B:
string UserIds = "Tom, Jerry, 007"; // Assuming we already concatenate the strings. So no loops this time here.
userBll = new UserBLL();
// Call userBll method to insert into SQL Server with 'UserIds' as parameter.
方法 B SProc / 在 SProc 中执行循环插入。
if right(rtrim(@UserIds ), 1) <> ','
SELECT @string = @UserIds + ','
SELECT @pos = patindex('%,%' , @UserIds )
while @pos <> 0
begin
SELECT @piece = left(@v, (@pos-1))
-- Perform the insert here
SELECT @UserIds = stuff(@string, 1, @pos, '')
SELECT @pos = patindex('%,%' , @UserIds )
end