C# 数据库查询与字符串比较性能

C# 数据库查询与字符串比较性能,c#,string,performance,comparison,query-optimization,C#,String,Performance,Comparison,Query Optimization,我正在一个.NET应用程序上工作,我们在远程数据库上执行许多查询 有一个字符串,可以是几个段落,用户可以更改 现在,我们正在获取该字符串并在数据库中更新它,而不管该字符串是否已更改 我正在考虑在从数据库检索字符串时保存它,并将其与客户端返回的内容进行比较。如果字符串相同,我不执行数据库查询,如果它们不同,我将执行查询 由于字符串可能有几段长,因此进行字符串比较可能需要相当长的时间,并且保存字符串也可能会占用空间。我最好保持系统的现状,还是应该进行字符串比较以确定是否需要进行数据库更新?因为客户端

我正在一个.NET应用程序上工作,我们在远程数据库上执行许多查询

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

现在,我们正在获取该字符串并在数据库中更新它,而不管该字符串是否已更改

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


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

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

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

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


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

dbString==inputString
不会花费很长时间来比较为什么不跟踪字符串是否已更改(例如在属性设置器中)而不是在更新前进行比较?谢谢你的有见地的回答!