0

私は現在、いくつかの組み合わせについて、製品をフィルターで絞り込むことができる検索を行っています。

たとえば、すべての製品から始めて、カテゴリまたは人気のあるストアで選択する場合があります。これは、フィルターが選択されるたびにデータをクランチし、各タイプのフィルターの合計と、まだ利用可能な選択肢を表示します。ユーザーはこれを数回実行して、最終的なリストにたどり着くことができます。

私は初めてEFを使用していますが、検索には最初に約10,000個の製品が含まれます。

Linq2SqlやSPとは対照的にEFを使用する主な違いは、データを取得するだけでなく、同時にそれらを具体化することです。一方、ページデータの取得には60ミリ秒かかりますが、10k製品には4秒かかります。これはあまり聞こえませんが、ユーザーが検索を更新するたびに行うことはできません。

データをキャッシュすることはできますが、これにより、上限しきい値またはサーバーファームの観点から、アプリケーションがいくらか制限されます。

しかし、特注のSPを作成する以外に、これを達成するためのより良い方法があるかどうか疑問に思いました。javascriptはサイトの動作の基本であるため、使用したくありません。

誰かアイデアはありますか?

4

3 に答える 3

0

ページングをサポートするコントロールを使用します。

そして、それに応じて、選択クエリでとを使用.Skip()します。.Take()

于 2012-08-24T11:16:58.207 に答える
0

10,000 個の製品すべてをロードするべきではありません。カテゴリなどをプルする必要がある場合は、それを個別に行い、現在のページに必要な量のデータのみをプルします。これは、すべての作業が SQL サーバー上で行われ、アプリケーションは必要な量のデータのみを処理できることを意味します。

于 2012-08-24T11:14:25.503 に答える
0

ナビゲーション プロパティが不要になるようにコードをリファクタリングしました。これにより、クエリされるテーブルの数が 3 から 1 に減り、許容できる結果が得られます。

于 2012-09-19T17:37:45.107 に答える