MS SQL SERVER读取大数据

j0pj023g  于 2022-10-22  发布在  SQL Server
关注(0)|答案(1)|浏览(230)

嗨,我使用MS SQL Server 2016,我需要读取大量数据。我想使用自适应缓冲首先读取,例如1000行。
我的程序重新运行了100万行,但我不希望应用程序内存不足,所以我想通过自适应缓冲读取数据。我只看到了长数据列,但我希望这是行。你能帮我吗?

643ylb08

643ylb081#

您的应用程序和用户不需要一百万行。你的程序为什么要把它们全部退回?您想使用pagination
例如,在SQL Server中,可以使用OFFSET/FETCH执行此操作:

CREATE PROCEDURE dbo.PageByPage
  @PageNumber int = 1,
  @PerPage    int = 100
AS
BEGIN
  SET NOCOUNT ON;

  WITH the_keys AS
  (
    SELECT key_column
      FROM dbo.table_name
      ORDER BY key_column
      OFFSET @PerPage * (@PageNumber - 1) ROWS
      FETCH NEXT @PerPage ROWS ONLY
  )
  SELECT t.all_columns ...
    FROM dbo.table_name AS t
    INNER JOIN the_keys AS k 
      ON t.key_column = k.key_column
    ORDER BY t.key_column;
END
GO

现在,您的应用程序跟踪您所在的页面,并在用户浏览页面时传递下一页或上一页。
CTE的原因是尽可能缩小初始搜索范围,因为您的实际查询可能更复杂(Aaron Bertrand谈到了这种方法here)。

相关问题