【发布时间】:2018-02-17 19:24:01
【问题描述】:
任务:出于仪表板的目的,我有一个复杂的选择查询,其中包含许多从多个表中获取数据的连接和子查询。
选项 1:我可以使用该 SELECT 查询创建一个视图,而 Spotfire 可以将该视图用作其仪表板的数据源。
选项 2:我可以使用 SELECT 查询作为源来创建 SSIS 包,并且可以将数据加载到单个表中每天一次。 Spotfire 可以使用该单个表作为其仪表板的来源。
注意:我不希望它是实时的。仪表板可以每晚更新一次(每天一次)。
我的理解:我知道视图基本上是一个存储的SELECT 查询。如果我创建一个视图,每次用户访问仪表板时,它都会尝试访问该视图。这意味着,在后端视图将命中数据库中的基础表。取而代之的是,我可以简单地让 SSIS 每天加载一次特定的表。这样 Dash 将触及这个表,而不是实际的高度事务性表。
你能建议我一个选项和解释吗?
【问题讨论】:
-
听起来任何一个都可以。您将不得不根据自己的要求做出此决定。
-
您可以尝试在创建视图时使用
WITH ENCRYPTION或WITH SCHEMABINDING来消除您的顾虑,并且创建一个仅用于将数据填充到一个表中的 SSIS 包有点过度设计,我会给使用意见一票xD -
正如 Sean Lange 所说,这真的取决于您的要求。如果您有空间限制并且想要避免物理化,那么视图会更好。如果它是一个复杂的或资源密集型的查询,那么每次有人需要该数据时都运行它可能会非常昂贵。有许多注意事项取决于您的用例。
-
@LONG 不确定加密与此问题有什么关系。当然,这无论如何都无法保护 sql 代码。删除它很简单。
标签: sql sql-server database sql-server-2008 sql-view