【发布时间】:2012-11-02 14:05:12
【问题描述】:
如果两个 IEnumerable(s) 在内存中,加入它们的内存使用量是多少?假设选择所有列。是左表大小+右表大小+连接表行数吗?
如果两个 IEnumerable(s) 是由文件流定义的,如果它们太大而无法放入内存,Join 是否会抛出内存不足异常?还是会加载到内存接近不足并多次运行扫描(类似于数据库连接)?
【问题讨论】:
-
为什么不试试看呢?它可能“取决于”,就像世界上大多数事情一样。这当然取决于所使用的 LINQ 提供程序。
-
我很好奇你为什么这么问。为什么连接的内存使用很重要?
-
当你说“加入”时,你的意思是“联合”(A 的所有行后跟 B 的所有行,如
JoinIterator方法)还是指 linq/database 样式“Inner/Outer Join”(根据关键字段将 A 和 B 的行组合成一行)? -
我的意思是 Enumerable.Join(),例如内连接