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

标签 c# database performance datatable

我选择了过滤的数据数。

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

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

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

2).第一次将过滤后的数据放到 DataTable 中-查询时,然后对该 DataTable 执行更多过滤-(无需在 DataBase 上查询)。

在什么情况下性能更高?

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

最佳答案

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

当然,不要把“2”带到荒谬的水平……从整个表格或大量行开始,在许多层面上都是不好的:

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

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

关于c# - 性能 - 数据库查询和数据表查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10169195/

相关文章:

ruby - 后续迁移。我的迁移文件中的 IP 地址应该是什么?

python - 对 HTML 文档执行拼写检查的高效算法

c# - 使用 null 初始化局部变量会影响性能吗?

c# - 未使用 HTTP Post 传递部分参数值

mysql - 在 CQ5 中,如何连接外部数据库代替 JCR?

c# - 将字符串中的字符替换为行中下一个的大写字母(Pascal 大小写)

sql - 关系代数和混淆一个复杂的例子

c++ - 从不遵循计算机字节对齐的 HDD 读取文件时出现性能问题

c# - Azure 服务总线,确定 OnMessage 是否停止处理

c# - 在 Global.asax 中给定值的变量有时会返回错误的值