我选择了过滤的数据量。
根据结果 我必须再进行几次查询迭代。
现在我可以选择2个选项:
1)。通过每次改进过滤的查询来查询DataBase
OR
2)。第一次将过滤后的数据带到DataTable - 查询后再对该DataTable执行更多过滤 - (无需在DataBase上查询)。
在哪种情况下表现更好?
P.S。:我知道之前曾问过同样的问题。但没有得到正确的答案。 :)
答案 0 :(得分:2)
如果你已经拥有更大的内存数据集,那么“2”几乎普遍会更快;没有网络跳,没有带宽,没有服务器端时间。只是一个内存过滤器。即使在像ASP.NET这样的无状态环境中,通常也会缓存查询结果(参数化),以便您可以在页面之间重复使用结果。
不要把“2”带到荒谬的等级,当然......从整个表开始,或者说很多行,在很多层面上都很糟糕:
但是,在许多常见情况下,您通常只会查询结果的第一页和计数,因此您不需要实际上有这组数据(你无法从1页和一个计数中推断出过滤后的子集是什么样的)。因此“1”成为更好的选择(但也保留了对分页结果的缓存)。
答案 1 :(得分:1)
正确答案:你需要决定什么是预期/期望的表现,而不是你感兴趣的衡量方法,看看哪个适合。
请注意,您需要测量与实际数据非常接近的数据集上的原型。由于您建议的两种方法是在内存使用和IO /网络访问之间进行明确的权衡,因此如果不在性能上与生产系统相当接近的机器上尝试真实数据,就无法预测结果。