性能 - 数据库查询和数据表查询

时间:2012-04-16 05:42:52

标签: c# database performance datatable

我选择了过滤的数据量。

根据结果 我必须再进行几次查询迭代。

现在我可以选择2个选项:

1)。通过每次改进过滤的查询来查询DataBase

OR

2)。第一次将过滤后的数据带到DataTable - 查询后再对该DataTable执行更多过滤 - (无需在DataBase上查询)。

在哪种情况下表现更好?

P.S。:我知道之前曾问过同样的问题。但没有得到正确的答案。 :)

2 个答案:

答案 0 :(得分:2)

如果你已经拥有更大的内存数据集,那么“2”几乎普遍会更快;没有网络跳,没有带宽,没有服务器端时间。只是一个内存过滤器。即使在像ASP.NET这样的无状态环境中,通常也会缓存查询结果(参数化),以便您可以在页面之间重复使用结果。

不要把“2”带到荒谬的等级,当然......从整个表开始,或者说很多行,在很多层面上都很糟糕:

  • 大的初始费用
  • 没有/很少使用索引
  • 在内存中处理很多

但是,在许多常见情况下,您通常只会查询结果的第一页计数,因此您不需要实际上有这组数据(你无法从1页和一个计数中推断出过滤后的子集是什么样的)。因此“1”成为更好的选择(但也保留了对分页结果的缓存)。

答案 1 :(得分:1)

正确答案:你需要决定什么是预期/期望的表现,而不是你感兴趣的衡量方法,看看哪个适合。

请注意,您需要测量与实际数据非常接近的数据集上的原型。由于您建议的两种方法是在内存使用和IO /网络访问之间进行明确的权衡,因此如果不在性能上与生产系统相当接近的机器上尝试真实数据,就无法预测结果。