性能 - 对数据库的查询和对数据表的查询
本文关键字:查询 数据表 数据库 性能 | 更新日期: 2023-09-27 18:31:09
我选择了过滤的数据数量。
基于结果我必须再进行几次查询迭代。
现在我可以使用 2 个选项:
1). 通过每次改进过滤查询来
查询数据库或
2). 第一次将过滤后的数据带到数据表(查询时,然后对该数据表执行更多过滤),(无需在数据库上查询)。
在哪种情况下性能更高?
PS:我知道以前有人问过同样的问题。但没有得到正确的答案。:)
如果你的内存中已经有更广泛的数据集,那么"2"几乎会更快;没有网络跳跃,没有带宽,没有服务器端时间。只是一个内存中的过滤器。即使在无状态环境(如 ASP.NET)中,通常也会像这样缓存查询(参数化)的结果,以便您可以在页面之间重用结果。
当然,不要把"2"带到荒谬的水平......从整个表或大量行开始在许多级别上都是不好的:
- 初始成本大
- 不使用/很少使用索引
- 内存中要处理的很多
但是,在许多常见方案中,通常只查询结果的第一页和计数,因此实际上没有该数据集(无法从 1 页和计数推断筛选的子集的外观)。因此,"1"成为更好的选择(但也保留分页结果的缓存)。
正确的答案:你需要决定什么是预期/期望的性能,而不是衡量你感兴趣的方法,看看哪一个适合。
请注意,您需要在与真实数据非常接近的数据集上测量原生型。由于您建议的 2 种方法是在内存使用和 IO/网络访问之间进行明确的权衡,因此如果不在性能上与生产系统相当接近的计算机上尝试真实数据,就无法预测结果。