假设我有一个返回10000行的查询。是否可以在SQL Server中配置此查询,以便以每个1000行的块的形式返回结果?所以我的应用程序收到1000行,处理它们,而SQL Server正在努力发送接下来的1000行等。
这是SQL Server 2005。
答案 0 :(得分:3)
SQL Server为您提供了一个结果集,该结果集作为网络数据包流提供(假设您使用TCP / IP连接到服务器)。
因此,如果您想要真正的硬核,您可以实现有线协议通过网络访问SQL Server,然后处理TCP流。然而,这将是一项重大工作,并不是真的可取。
另一种可能性是查询不是一次,而是使用多个查询,其中每个查询都获得结果集的某个“窗口”。这称为“服务器端分页”。有关如何完成的说明,请参阅this文章。
另一种方法是在客户端使用基于流的访问。例如,如果您使用ADO.NET作为客户端,则可以使用SqlDataReader一次获取一行(在后台,数据仍然通过网络以块的形式传递,但这对您来说是透明的)。但这取决于您使用的客户端,您尚未指定。