2

私のアプリケーションには、テキスト ボックスに入力したテキストに基づいて一部のデータを検索するオプションがあります。

text- changeそのため、テキスト ボックスイベントで検索 (文字列を入力として受け取るストアド プロシージャを呼び出す) を実行します。

Improving ADO.NET Performance に関する記事を読んだことがありますが、データベースへのラウンド トリップを減らすとパフォーマンスが向上することがわかりました。

この種の状況に対するより良いアプローチはありますか?

4

4 に答える 4

1

要件に合っているかどうかはわかりませんが、データベース呼び出しを行い、目的のテーブルをデータセットにロードしてから、ローカルでデータセットを呼び出すことができます。タイマーを使用してテキスト変更時にイベントを発生させるのに遅延を導入すると、要件が完了し、すべてが高速になるはずです。私たちのアプリケーションではこのアプローチを使用しており、非常に役立ちます。

しかし一方で、このアプローチでさえ、パフォーマンスを向上させるのに大したことではないことを強調したいと思います. アプリケーションのサイズがかなり大きい場合、アプリケーションはアーキテクチャとフローに基づいて高速です。しかし、テクノロジーの近道を考えるのは常に素晴らしいことです。

于 2012-12-19T07:58:45.523 に答える
0

検索で何が返されるかわからないので、推測を残します。

キーがテキストボックス入力で、値が検索で返されるものである辞書にデータを読み込むことができます。次に、LINQを使用してキーを検索できます。

于 2012-12-18T14:17:35.263 に答える
0

検索インデックスの実装を使用するのはどうですか? 私は非常によく似た問題に対してこれを行いました。

アプリケーションを開始したら、Lucene インデックスを準備します。インデックスは、変更に対応するために定期的に更新されます。

http://www.codeproject.com/Articles/29755/Introducing-Lucene-Net

これは、直接の DB 呼び出しよりもはるかに高速であり、インデックスを準備するだけでよいため、DB サーバーの負荷が少なくなります。さらに、Lucene は非常に強力な一連の検索基準をサポートしています。

于 2012-12-18T21:30:33.643 に答える
0

テキストボックスを変更するたびに更新をトリガーする必要がある場合は、希望するユーザーエクスペリエンスに依存します。他にできることはほとんどありません。textchanged は、入力されたすべての文字に対して起動するのではなく、ユーザーがテキストボックスを離れて値が変更された後にのみ起動する必要があります

ユーザーが複数のフィールドで検索できるが、ボタンの背後で検索する場合

この関数が頻繁に使用され、かなり静的なデータがあまりない場合は、アプリケーションでデータをキャッシュし、キャッシュからフェッチできます

于 2012-12-18T12:33:22.970 に答える