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

本文关键字:查询 数据表 数据库 性能 | 更新日期: 2023-09-27 18:31:09

我选择了过滤的数据数量。

基于结果我必须再进行几次查询迭代。

现在我可以使用 2 个选项:

1). 通过每次改进过滤查询来

查询数据库

2). 第一次将过滤后的数据带到数据表(查询时,然后对该数据表执行更多过滤),(无需在数据库上查询)。

在哪种情况下性能更高?

PS:我知道以前有人问过同样的问题。但没有得到正确的答案。:)

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

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

当然,不要把"2"带到荒谬的水平......从整个表或大量行开始在许多级别上都是不好的:

  • 初始成本大
  • 不使用/很少使用索引
  • 内存中要处理的很多

但是,在许多常见方案中,通常只查询结果的第一页和计数,因此实际上没有该数据集(无法从 1 和计数推断筛选的子集的外观)。因此,"1"成为更好的选择(但也保留分页结果的缓存)。

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

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