c# - SQL Server 2008——并行执行查询

标签 c# sql sql-server sql-server-2008

有没有一种简单的方法可以并行执行查询?我有一个类似这样的查询:

delete from TableA where id = @id
delete from TableB where id = @id
delete from TableC where id = @id
...

我想同时进行。我也可以使用 C#,但不确定如何使用。

最佳答案

第一个想法是拥有单独的线程和单独的连接,但我认为您可以使用异步回调在单个线程中管理多个连接:

string[] tables = new string[] { "TableA", "TableB", "TableC" ... };
var runningCommands = new List<SqlCommand>();
foreach(var table in tables)
{
  var conn = new SqlConnection(...);
  conn.Open();
  var cmd = new SqlCommand("DELETE FROM " + table + " WHERE id = @id");
  cmd.Parameters.Add(new SqlParameter("@id", id);
  cmd.BeginExecuteNonQuery(); 
  runningCommands.Add(cmd);
}
// now wait for all of them to finish executing
foreach(var cmd in runningCommands)
{
  cmd.EndExecuteNonQuery();
  cmd.Connection.Close();
}

关于c# - SQL Server 2008——并行执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074039/

相关文章:

sql-server - 需要按计数器分组作为返回的列

sql - 索引字段上的多个过滤器

sql - 我们可以动态指定并行度吗?

sql-server - 从存储过程读取 INSERT 输出

c# - 登录用户名和文本框文本未保存在数据库中

c# - 如何以编程方式列出已安装的视频编解码器?

c# - Func<T, T> 到 T 的通用隐式转换

c# - 如果 .NET SqlConnection 在 `using` 语句内引发异常,我是否需要手动关闭它?

PHP MySQL 专栏总计

c# - 判断 SqlTransaction 是写入数据还是只读