考虑这个SQL无法创建索引视图
CREATE VIEW [dbo].[MyView1] ([ID],[VisitDate],[StartDate] ,[EndDate],[MyCount])
WITH SCHEMABINDING
AS
SELECT id, VisitDate,dateadd(dd,-10,VisitDate),dateadd(dd,10,VisitDate),
count_BIG(*)as MyCount
FROM dbo.Visits2
group by id,VisitDate
我试图创建的ID这一观点聚集索引,VisitDate.I正在以下错误。
无法创建聚集索引“IX_!”对视图“CI_DB.dbo.MyView4” ,因为该视图的选择列表包含关于 聚合函数的结果或分组列的表达式。
考虑删除聚合函数结果上的表达式或 从选择列表中分组列。
我将不包括在该定义中的2分计算列反正即使你发现周围的错误的方式。这在运行时计算并不重要,只是意味着视图存储需要更多页面。 –
@Martin。但是我有一个关于Visitdate的索引,当我使用这个dateadd时,我的索引是没有意义的吗?我真的希望这些被预先计算并坚持下去。如果你做了' –
索引将不会被使用WHERE DATEADD(DD,-10,VisitDate)= @ startdate'但是这当然是很容易重新安排为'WHERE VisitDate = DATEADD(DD,10,@开始日期) ' –