1

我已经设置了一个索引视图,我打算将其用作 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一个有自己索引的表?

4

1 回答 1

1

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

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

有关此工作原理的更多详细信息,请查看白皮书 Analysis Services ROLAP for SQL Server Data Warehouses,网址为http://msdn.microsoft.com/en-us/library/ff956108(v=sql.100).aspx

于 2012-11-04T16:21:20.380 回答