sql单一大视图与视图联合

时间:2016-08-16 18:10:01

标签: sql sql-server

我有一个带有根表的数据库,我们称之为 Study ,以及几个子表。 研究表有一个唯一的ID和另一个与此问题相关的字段:研究类型 - 这是一个枚举字段,目前有8种可能的研究类型。每行只有一种研究类型 我还有8个视图,每个研究类型一个。每个视图都有逻辑来计算一个名为研究名称的新字段 - 计算此字段的逻辑对于每种研究类型都是不同的,使用子表中的不同字段,不同的查找表等。这就是为什么创建了8个单独的视图 我现在需要创建一个组合视图,其中包含Study表中的所有行,并且每行还包含 Study name 字段,该字段当前在8个视图中计算取决于学习类型。

所以我的问题是:最好的方法是什么?假设我可以控制数据库结构,我可以创建我需要的包括索引。想到的选项是:

  1. UNION ALL横跨8个视图。我担心的是性能,因为我需要使用组合视图使用自己的过滤器运行多个报告,我不确定在联合之后是否会保留源表中的索引。
  2. 编写一个视图,将当前8个视图中的逻辑组合成一个大视图,使用CASE语句逐行执行正确的Study name逻辑,具体取决于学习类型。
  3. 我还没想过别的什么?也许8个存储过程只计算8种不同的研究类型,以及一个调用它们的视图?
  4. 谢谢 -

0 个答案:

没有答案