我们有一个两难境地,即我们有一个记录层次结构,层次结构中的每个项目都可以是任意数量的不同类型。层次结构中的最后一个节点是一个站点,在层次结构的更上方,即父级有概念项目,如区域主管、总经理等。层次结构中的项目不处于固定级别,即一个分支中的常务董事可能处于第 3 级,而在另一个分支中处于第 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 次读取 aaaaaargh!
提前致谢
安迪