注文と関連データをリストするグリッドが必要です。(純粋に架空の例)
簡単にするために:
OrderID
OrderName
OrderDate
Collection Parts
Collection Destinations
Collection SuppliersInvolved
グリッドは各注文を表示する必要がありますが、各コレクションのテキストによる説明も表示する必要があります。
OrderID OrderName OrderDate Parts Destinations SupplierInvolved
2 davo 21/5/12 A,B,C London, Paris SuppA,SuppB,SuppC
現在、このグリッドには最大 200 行が含まれる場合があります。
この問題は、私たちが使用するオーダーメイドの ORM には、複数の PK の結果セットを一意のオブジェクトにマッピングする際に、いくつかの重大な速度低下の問題があることです。
例えば。
OrderID OrderName OrderDate Part Destination Supplier
2 davo 21/5/12 A London SuppA
2 davo 21/5/12 B London SuppA
2 davo 21/5/12 A London SuppB
2 davo 21/5/12 B London SuppB
結果セットに 1 つのコレクションが含まれている場合でも、この問題が発生します。クエリ自体は問題なく高速に実行されます。問題はマッピングです。
したがって、実際には2つのオプションが残っています(私が見る限り):
注文の結果セットを取得し、結果セット内の注文ごとに、パーツをフェッチし、目的地をフェッチし、サプライヤーをフェッチします。これは、DB への 601 回の呼び出しを意味します。
FOR XML PATHを使用して、各コレクションをグループ化します。より多くの CPU を集中的に使用し、大量の初期クエリを読み取ることを意味します。
第一に、上記の 2 つのアプローチのどちらがより優れているように見えるか、そして第二に、私が思いもよらなかった他のより良いアプローチがあるかどうかを考えています。問題は、両方とも厄介なオブジェクト マッパーを使用する必要があることです (このクエリの結果セットのためだけに独自の DAL マッピング プロシージャを作成することはできません)。
何か案は?
ありがとう。