【问题标题】:Database query vs string comparison performance [closed]数据库查询与字符串比较性能[关闭]
【发布时间】:2016-10-11 17:51:22
【问题描述】:

我正在开发一个 .NET 应用程序,我们在其中对远程数据库执行许多查询。

有一个字符串,可能有几个段落,用户可以更改。

现在,我们正在获取该字符串并在我们的数据库中更新它,无论该字符串是否已更改。

当我们从数据库中检索字符串并将其与客户端返回的内容进行比较时,我正在考虑保存该字符串。如果字符串相同,我不进行数据库查询,如果它们不同,我将进行查询。

由于字符串可能有几段长,因此进行字符串比较可能需要相当长的时间,并且保存字符串也可能占用空间。我最好保持系统不变,还是应该进行字符串比较以确定是否需要更新数据库?

【问题讨论】:

  • dbString == inputString 不会拿quite a long time 来比较
  • 为什么不只跟踪字符串是否被更改(例如在属性设置器中)而不是在更新前进行比较?

标签: c# string performance comparison query-optimization


【解决方案1】:

由于客户端的字符串比较是在内存中完成的,并且因为您不需要搜索旧字符串,所以检查相等性会很快运行。它也会以自然分布的方式发生,因为每个客户端都会进行自己的比较。

相比之下,向服务器发送字符串会很慢,因为网络操作不可避免地比对相同数据的线性时间内存操作慢。此外,所有更新都将在单个服务器上进行,从而增加了系统集中组件的负载。

如果字符串在大量情况下保持不变,最好在内存中进行比较以减少往返次数。

另一方面,如果字符串很少保持不变,您可以通过删除此优化来简化代码。

【讨论】:

  • 感谢您富有洞察力的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2012-07-18
相关资源
最近更新 更多