我正在尝试使用LINQPad作为SSMS替代品,但返回大型结果集需要花费大量时间。我通常会在几分钟后放弃等待,但如果我不管它,LINQPad通常会因为内存不足而超时。
LINQPad在将其显示在网格中之前是否将整个结果集加载到内存中?它是否能够以块的形式返回记录,在输出网格中添加记录,因为数据库中可以获得更多结果 - 类似于SSMS的工作方式?
从LINQPad formus(http://forum.linqpad.net/discussion/303/is-entire-sql-result-set-loaded-into-memory-before-display)交叉发布(并修订),因为我没有回复。
答案 0 :(得分:1)
这不应该在富文本模式下发生,因为LINQPad隐式限制了它获取的数据量(默认情况下为1000行)。经过一番调查后,问题似乎是由于ADO.NET的SqlDataReader中的一个错误。在只读取部分行后处理数据读取器时,它会通过枚举所有剩余数据来“清理”读取器。这当然很烦人,所以我正在研究是否有可能检测到这种情况并取消基础命令。
编辑:在最新测试版中有一个解决方法,因此在富文本模式下,查询现在应该快速完成前1000行。