0

レコードの階層があるというジレンマがあります。階層内の各アイテムは、任意の数の異なるタイプにすることができます。階層の最後のノードはサイトであり、さらに上位の階層、つまり親には、エリア ディレクター、マネージング ディレクターなどの概念的なアイテムがあります。階層内のアイテムは、あるブランチのマネージング ディレクターである固定レベルではなく、おそらくレベル 3 であり、別のブランチのレベル 7 です。

そのため、各サイトを表示する必要があるレポートがあり、7 つのサイトに関連するマネージャーがあり、結果セットにはそれぞれ異なる 1500 のサイトが含まれています。特定のタイプのサイトの親を返すスカラー関数がありますが、パフォーマンスの観点からシステムの残りの部分に影響を与える 8,000,000 ユニットを超える読み取りコストが発生する以外は問題なく動作します。

読み取りコストを削減し、レポートの生成にかかる時間を大幅に短縮するために、この情報をより効率的な方法で抽出する方法についてアイデアを持っている人はいますか?

したがって、問題を引き起こしているビットは、次の行に沿った最終的な選択ステートメント内にあります。

SELECT 
   [SiteName], FetchSiteHierarchyItem(BusinessID, 'OD') AS OperationsDirector, 
   FetchSiteHierarchyItem(BusinessID, 'MD') AS ManagingDirector

 ...... and so on

戻る必要があるレベルの数に応じて、 の各呼び出しにFetchSiteHierarchyItemは約 700 回の読み取りが必要になるため、明らかに 1500 行 x 7 フォーマット x 700 回の読み取りは 7,350,000 回の読み取りに相当します。

前もって感謝します

アンディ

4

0 に答える 0