因此,我了解SqlDataReader的速度非常快,您不知道将获得多少行,并且一次只能为每一行分配内存。因此,如果我有一百万行的小行(例如4到32字节),则每行读取都意味着服务器往返。没有缓冲发生吗?
如果我通过SQL Native Client使用ODBC,则可以设置一个适当大的行缓冲区,以便每次往返获取512行。当使用者读取第0行时,我先提取512行,然后返回第0行,接下来的511次读取是内存访问,而第513次读取是新的往返。
对我来说,这应该更快(并且不必只转发),但是这取决于结果集在服务器上如何实现。在后一种情况下,必须先完成结果集,然后才能开始通过网络进行获取,但对于SqlDataReader和TDS(我认为它使用的是我不熟悉的协议),情况可能不是(?)。任何意见表示赞赏。