我正在使用 DataReader 从大表(1.8 GB,2000 万条记录)中检索行。
SQL Server (2008 R2) 消耗大量内存,并且(有时)无法在此查询中生存。它可能将整个结果保存在内存中,并将此缓冲区中的行返回给客户端。
选择非常简单 - 它只返回表中具有简单 where 条件的所有行,列中存储的日期小于实际日期。列中没有 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