1

我知道 SQL Server 2005 的 Express 版本在估计最佳执行计划时不会自动包含物化视图(带有模式绑定)。但是,当直接查询视图时 - 我仍然会在实际执行计划中显示底层表。为什么我的聚集索引没有在查询中使用的物化视图上创建?

视图代码是:

CREATE VIEW [dbo].[athObjectNames] WITH SCHEMABINDING
AS
SELECT     convert(nvarchar(440),oTextValue) as oTextValue, oObjectID, oTypeID, oVersion
FROM         dbo.athObjects
WHERE     (oTypeID < 100)

并且在 oTextValue 列上创建了一个唯一的聚集索引。

但是,当我执行如下查询时:

select * from dbo.athObjectNames
where oTextValue = 'Alibabki'

...我看到基础表(dbo.athObjects)在执行计划中使用条件(oTypeID < 100)。athObjects 表的 oTextValue 列上没有索引。即使我将条件更改为“<'Alibabki'”,索引仍然没有用。

提前感谢您的帮助。

4

1 回答 1

1

好的,我发现应该使用“with (noexpand)”提示来强制优化器使用物化视图。也许这会帮助其他人。:-)

于 2010-02-04T10:42:11.260 回答