选择许多行时出现内存问题

本文关键字:内存 问题 许多行 选择 | 更新日期: 2023-09-27 18:36:13

我正在使用DataReader从大表(1.8 GB,20百万条记录)中检索行。

SQL Server (2008 R2) 消耗大量内存,并且(有时)无法在此查询中幸存下来。它可能将整个结果保存在内存中,并将行从此缓冲区返回到客户端。

选择非常简单 - 它只是返回表中具有简单条件的所有行,存储在列中的日期小于实际日期。列中没有 Blob 或字符串。

我对内存使用原因的估计是否正确?在这种情况下我能做什么 - 我需要所有行,查询不必很快,但内存效率高。

谢谢

更新的信息 - 选择"在存储过程中"。法典:

CREATE PROCEDURE [get_current_records]
with recompile
AS
BEGIN
declare @currentDate datetime = getdate()
SELECT 
   [id]
  , name
  , description
  , number
  ,[valid_from]
  ,[valid_to]
  from ui_parcela
  where valid_from < @currentDate and (valid_to is null or valid_to > @currentDate )
END

选择许多行时出现内存问题

重要的是要知道你对这些行做了什么?您是否将它们存储在内存中,或者您可以使用每一行并将它们从内存中释放出来

所以我建议你尝试使用异步阅读器

听起来,

如果服务器内存不足,您需要查看SQL查询。是否已正确编制索引?

检查 SQL 执行计划以查看哪些成本高昂。