DataReader を使用して、大きなテーブル (1.8 GB、2000 万件のレコード) から行を取得しています。
SQL Server (2008 R2) は大量のメモリを消費し、(場合によっては) このクエリに耐えられません。おそらく結果全体をメモリに保持し、このバッファからクライアントに行を返します。
選択は非常に単純です-単純なWHERE条件でテーブルからすべての行を返すだけで、列に格納されている日付は実際の日付よりも小さいです。列にブロブや文字列はありません。
メモリ使用量の原因についての私の推定は正しいですか? そして、この状況で何ができるでしょうか - すべての行が必要です。クエリは高速である必要はありませんが、メモリ効率は高くありません。
ありがとう
更新された情報 - 選択はストアド プロシージャにあります。コード:
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