2016-10-11 14 views
-1

私はリモートデータベースで多くのクエリを実行する.NETアプリケーションを開発しています。データベースクエリと文字列比較のパフォーマンス

ユーザーが変更できる文字列がいくつかの段落である可能性があります。

現時点では、文字列が変更されたかどうかにかかわらず、その文字列をデータベースで更新しています。

文字列をデータベースから取得し、クライアントが返す文字列と比較するときに文字列を保存することを考えています。文字列が同じ場合は、データベースクエリを実行しません。異なる場合はクエリを実行します。

文字列が複数の段落になる可能性があるため、文字列比較を行うとかなりの時間がかかり、文字列を保存すると領域を占有する可能性があります。私はシステムをそのまま保つほうがよいですか、データベースの更新を行う必要があるかどうかを判断するために文字列比較を行うべきですか?

+0

'dbString == inputString'は比較するのにかなり時間がかかりません – Darren

+0

更新前に比較を行うのではなく、文字列が変更されたかどうかを追跡するだけではいかがですか? – itsme86

答えて

2

クライアント側の文字列比較はメモリ内で行われるため、古い文字列を検索する必要がないため、等価性のチェックは非常に迅速になります。また、各クライアントが独自の比較を行うため、自然に分散した形で発生します。

対照的に、サーバーへの文字列の送信は遅くなります。なぜなら、ネットワーク操作は、同じデータの線形時間内メモリ操作よりも必然的に遅いからです。さらに、すべての更新は単一のサーバー上で行われるため、システムの集中コンポーネントの負荷が増加します。

文字列がかなりの場合変化しない場合は、メモリ内の比較を行い、往復回数を減らす方がよいでしょう。

一方、文字列がほとんど変化しない場合は、この最適化を削除することでコードを簡素化できます。

+0

誠実な答えをありがとう! –