有没有办法多线程SqlDataReader?

Mar*_*tin 7 sql sql-server performance multithreading c#-3.0

我有一个Sql查询,它返回我超过50万行进行处理...这个过程不需要很长时间,但我想通过一些多处理来加快它的速度.考虑到下面的代码,是否有可能轻松地多线程?

using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        // ...process row
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我可以简单地在结果列表的开头和中间获得光标,那将是完美的.这样,我可以有两个线程处理记录.但是SqlDataReader不允许我这样做......

知道如何实现这一目标吗?

Joe*_*orn 6

设置一个生产者/消费者队列,一个生产者进程从读取器中拉出并尽可能快地排队记录,但不进行"处理".然后,一些其他数量的进程(您想要多少个进程取决于您的系统)出列并处理每个排队的记录.