次のシナリオのどれが最も効果的かを判断するのを手伝ってくれませんか。
3つのユーザーコントロールがあります。各コントロールは、SQL Serverクエリの結果に基づいてコンテンツを生成する必要があります。たとえば、ユーザーコントロール#1は、グリッドビューにクエリの出力を入力します。
SQL Serverデータベースへのラウンドトリップを減らすために、キャッシュを利用したいと思います。私は次の2つの解決策を思いつきましたが、どちらが最も効果的か知りたいです。
シナリオ#1:
3つのユーザーコントロールのクエリすべてを単一のSQLServerストアドプロシージャ(バッチ処理)に配置し、含まれているページ内のユーザーコントロールの外部でストアドプロシージャを実行してから、各ユーザーコントロールにクエリ出力を提供します。3つのクエリすべてを単一のストアドプロシージャに配置することで、データベースへのラウンドトリップが削減されます。
このシナリオでのキャッシュは、ストアドプロシージャの出力をキャッシュすることによって行われます。したがって、ストアドプロシージャの出力は、各ユーザーコントロールにその出力を提供するために毎回メモリから取得され、その後、各ユーザーコントロールがその出力を生成します。クエリの約188の異なるバージョンが、ASP.NETオブジェクトキャッシングによってキャッシュされます。
シナリオ#2:
各ユーザーコントロール内でSQLServerデータベースを個別にクエリし、それぞれが取得したクエリ結果を使用して各ユーザーコントロールの出力を生成します。これは、各ユーザーコントロールが個別にSQLServerデータベースを呼び出すことを意味します。このシナリオでのキャッシュは、各ユーザーコントロールの出力をキャッシュすることによって行われます。したがって、ユーザーコントロールは毎回出力を生成する必要がなく、メモリから直接出力を取得できます。このシナリオの落とし穴は、1つ以上のユーザーコントロールの約188の異なるバージョンをキャッシュする必要があることです。
前もって感謝します