2017-08-30 35 views
0

我正在一个拥有非常大的事务数据表(数亿行)的数据仓库中工作。用户想要切断数据的某些常见方式(仅查看某些事务类型,仅查看某些供应商,每次只能查看一个月等),并试图确定从性能角度。表与视图的性能SQL Server

数据是静态的,每月加载一次。所以,我不必处理不断变化的数据。

我应该创建只包含所需记录的视图吗?或者,我应该创建一个表并为每个用例加载数据吗?基本上,我想我的问题是这样的:如果我有一个大的静态表,我应该写一个视图,只筛选我想要的记录,然后查询该视图?或者,我应该创建一个表,只从我的主表加载我想要的记录,然后查询表?

我看到很多关于“视图vs查询”的讨论,但是我真正要问的是“查询视图vs查询表”。

+0

很难说没有一些细节。您可以对视图编制索引,因此这可能对创建需要获取所需数据的特定视图非常有用。你可以将数据加载到测试环境中吗?所有的答案都将在执行计划中。 – Leonidas199x

+0

该视图仍然会查询表格,因此这里不会有太多差异。但是如果视图被索引,它可能会有所帮助。可悲的是,这仅仅是一个太宽泛的问题。 –

+0

您是否将Inmon或Kimball方法用于您的数据仓库体系结构?这是在SQL Server中还是在SSAS中? – Eli

回答

0

我也不得不通过SSIS包将事务表中的8000多万行转移到我的数据仓库当我面临ASYNC_NETWORK_IO等待类型时,最终我在SSIS中修改了我的查询以逐批从事务表中获取记录并插入到我的数据仓库中。 你也可以尝试过滤器条件的视图,但无论如何它会从基表查找,所以我通过批量去抓取记录。