2011-02-07 35 views
1

假设我有一个返回10000行的查询。是否有可能在SQL Server中配置此查询,以便每个数据块返回1000行的结果?所以我的应用程序收到1000行,处理它们,并且尽管SQL Server正在努力发送下一个1000行等。在SQL Server中以块的形式提取结果集

这是SQL Server 2005中

回答

3

SQL服务器给你一个结果集,它是作为一种网络数据包流(假设你使用TCP/IP连接到服务器)。

所以,如果你想真正核心,你可以实现有线协议通过网络访问SQL Server,然后在TCP流上工作。然而,这将是一项重大的工作,并不是真正可取的。

另一种可能性是查询不是一次,而是使用多个查询,其中每个查询都会得到结果集的某个“窗口”。这被称为“服务器端分页”。有关如何完成的说明,请参阅this文章。

另一种方法是在客户端使用基于流的访问。例如,如果您使用ADO.NET作为客户端,则可以使用SqlDataReader一次获取一行(在后台数据仍然通过网络以块的形式交付,但对您而言这是透明的)。但这取决于你使用的客户,你没有指定。

+0

会有服务器端分页和几个调用只是为了在客户端把它们放在一个列表中有任何意义吗?我们只做一个较大的调用并返回该列表,而不是仅仅调用一个巨大的调用,而是将较小的调用附加到列表中,然后返回该列表。这可以改善响应时间和/或内存使用情况吗?所以在较小的呼叫之间确实没有处理。 – KTrum 2011-02-07 16:32:00