【发布时间】:2013-03-16 19:28:49
【问题描述】:
所以,我刚刚发现 SQL Server 2008 不允许您在定义中为带有 CTE 的视图编制索引,但它允许您通过 alter 查询在视图定义中添加 with schemabinding。这有充分的理由吗?出于某种我不知道的原因,这是否有意义?我的印象是WITH SCHEMABINDINGs 的主要目的是让你索引一个视图
新的和改进的更多查询操作
;with x
as
(
select rx.pat_id
,rx.drug_class
,count(*) as counts
from rx
group by rx.pat_id,rx.drug_class
)
select x.pat_id
,x.drug_class
,x.counts
,SUM(c.std_cost) as [Healthcare Costs]
from x
inner join claims as c
on claims.pat_id=x.pat_id
group by x.pat_id,x.drug_class,x.counts
以及创建索引的代码
create unique clustered index [TestIndexName] on [dbo].[MyView]
( pat_id asc, drug_class asc, counts asc)
【问题讨论】:
-
顺便说一句,即使可以为此视图编制索引,聚合列 (
counts) 也不应该是唯一索引定义的一部分。
标签: sql sql-server tsql view common-table-expression