2009-03-23 11 views
4

私たちは、階層内でお互いに関連しているオブジェクトのSQLストア(約80,000件)を常に照会するDB Webアプリケーションを開発しています。 (多くのオブジェクトに同じテーブルの別のオブジェクトに関連する親オブジェクトがある)パフォーマンスを向上させるためにSQL ServerクエリではなくメモリオブジェクトでLINQを使用できますか?

オブジェクトツリー全体をメモリに読み込んでLINQを使用してオブジェクトを照会する方が良いアプローチかもしれません。オブジェクトはそれぞれ1-5Kです。

誰もが考えていますか?

答えて

1

"LINQ"には、LINQ to Objects、LINQ to SQLなどが含まれます。メモリ内では確かにクエリできますが、最適化する前にパフォーマンス分析を行うまで待つ必要があります。あなたは間違ったものを最適化するかもしれません。

1

クライアントメモリに最大250メガバイトのデータをロードすることは、あまり良い考えではないようです。メモリがある場合は、LINQ to Objectを使用してデータベースのラウンドトリップを保存できます。

問題は、データが階層的で、1つの行を取り出して調べ、関連する行を取得しなければならず、これが非常に多くの往復を引き起こすことです。

プログラムの実行時に遅延ロードを使用してクライアントメモリにさらに多くの行を取得し、ワーキングセットが安定するとメモリ内でより多くのクエリを実行できます。しかし、これは、行が複数回アクセスされた場合にのみ役立ちます。

もう1つの解決策は、関連する行を特定の行からある距離まで検索する共通テーブル式を使用して再帰ビューまたはストアドプロシージャを作成することです。

関連する問題