2011-08-04 7 views
2

私はコミュニティの脳を選ぶことができるかどうか疑問に思っていました...C#データ収集vデータベース参照 - より効率的ですか?

私が取り組んでいるプロジェクトでは、キー値リストから値を検索する必要があります。このリストは、ソフトウェアの使用期間中は変更されません。例として、リストはこうして:

ID  Name 

1  Apple 
2  Orange 
3  Pear 
4  Banana 

...などと言うことができます。

私はこれを実装する2つの方法を検討しています。最初は、何らかの種類の(まだ未定の)C#データコレクションにリストを格納し、必要に応じて実行時に必要な値を調べます。私が検討している2番目の方法は、データベーステーブル(SQL Server 2008、質問したので)にリストを格納することです。アプリケーションは、ストアドプロシージャを介して実行時にデータベースにアクセスできます。

Webフォームからユーザーが要求した後、検索が2回連続して行われます。

私のクエリはこれです:これらの2つの方法のどれが処理時間に関して最も効率的でしょうか?

私はこの質問に明確な答えがないかもしれないことを認識していますが、コメントや考えを歓迎します。

+0

hawk - リストの内容はどのくらいの頻度で変更されますか?どのような変更がユーザーによって「見られる」必要があるか? – mikey

+1

リストがどれくらい大きくなるかを知るまで、良い答えを得ることはできないと思います。 –

+0

リストには約100項目が含まれます。 – hawkoftheeye

答えて

3

パフォーマンス面では高価なものは、通常ディスクアクセスとネットワークアクセスです。

Webサーバーまたはアプリケーションサーバーのメモリ(RAM)でコレクションを使用できる場合は、データベースへのクエリよりも高速です。

データが頻繁に変更される可能性が低い場合は、メモリデータ構造に変更することができます。変更が必要な場合は、dbからクエリしてキャッシュに保存して、キャッシュが期限切れになるか、必要に応じてリセットされるまでのデータベースクエリ。

+0

これは事実だと思っていましたが、他の人からのフィードバックを得ることは素晴らしいことです。どうもありがとう – hawkoftheeye

0

辞書<>を使用すると、データベースへのラウンドトリップよりもはるかに高速です。

+0

これを調べます。私が正直であれば、私はC#でコーディングしていないし、まだ足を見つけている。ご提案いただきありがとうございます。 – hawkoftheeye

+0

これはSystem.Collections.Generic名前空間にあります。 –

0

あなたの状態で -

このリストは、ソフトウェアの寿命を通して変わりません。

リストをプログラムにハードコードします。変更されることのないリストのためのデータベースオーバーヘッドの価値はありません。

+0

私はそれをとにかくハードコードしないで、むしろそれをXMLファイルまたは同様の記憶域に入れて、あまりコードを編集せずに変更することができます; –

+0

それは賢明なようです、あなたの質問を読んだ方法は、 – ipr101

+0

リストが変わらないことを確認できます。リストは、「1年」などのテキスト用語を、その時間枠内の全日の数を表す整数に変換する必要があります。 – hawkoftheeye

関連する問題