索引视图,带(NOEXPAND)和SSAS多维数据集

时间:2012-11-02 07:58:26

标签: sql sql-server-2008-r2 ssas indexed-view

我已经设置了一个索引视图,我打算将其用作SSAS多维数据集的数据源视图。索引视图如下所示:

create view vw_indexed1 with schemabinding
as

select 
key1, 
key2, 
count_big(*) as bigcount 
from
table1
group by
key1, 
key2, 
GO


CREATE UNIQUE CLUSTERED INDEX [PX_vw_indexed1] ON [dbo].[vw_indexed1] 
(
key1, 
key2, 
)WITH 
(PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = ON, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

现在,当我去select * from vw_indexed1时需要很长时间,大概是因为它试图扩展基础表中的索引,所以我会使用select * from vw_indexed1 with (noexpand),它就像直接选择一样执行带有聚簇索引的表。

我的问题是:如果我将此视图用作SSAS项目的DSV,是否每次都尝试使用基础索引?如果是这样,我如何强制它将vw_indexed1视为具有自己索引的表?

1 个答案:

答案 0 :(得分:1)

排序。您可以通过让DSV指向视图本身是select * from vw_indexed1语句来强制解决问题。

但它可能没有选择它的原因是因为SQL Server引擎本身是决定是否使用索引视图的引擎。即使您的DSV可能指向它,它所做的只是向表和/或索引视图发送查询。实际上,您可以将DSV指向基础事实表,如果查看探查器跟踪,在某些情况下,即使您指定了表本身,也会选择索引视图。

有关此工作的详细信息,请查看http://msdn.microsoft.com/en-us/library/ff956108(v=sql.100).aspx

上的SQL Server数据仓库分析服务ROLAP白皮书