我选择了过滤的数据数。
根据结果 我必须再进行几次查询迭代。
现在我可以选择 2 个选项:
1).通过每次改进过滤查询来查询数据库
或
2).第一次将过滤后的数据放到 DataTable 中-查询时,然后对该 DataTable 执行更多过滤-(无需在 DataBase 上查询)。
在什么情况下性能更高?
P.S.:我知道之前有人问过同样的问题。但没有得到正确的答案。 :)
最佳答案
如果您已经内存中有更广泛的数据集,那么“2”几乎普遍会更快;没有网络跃点,没有带宽,没有服务器端时间。只是一个内存过滤器。即使在 ASP.NET 等无状态环境中,缓存查询(参数化)的结果也是很常见的,这样您就可以在页面之间重复使用结果。
当然,不要把“2”带到荒谬的水平……从整个表格或大量行开始,在许多层面上都是不好的:
- 初始成本高
- 不/很少使用索引
- 需要在内存中处理很多
但是,在许多常见情况下,您通常只查询结果的第一页和计数,因此您不必实际上有那组数据(你不能从一页和一个计数中推断出过滤后的子集是什么样的)。所以“1”成为更好的选择(但也保留分页结果的缓存)。
关于c# - 性能 - 数据库查询和数据表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10169195/