Итак, я только что узнал, что SQL Server 2008 не позволяет индексировать представление с помощью CTE в определении, но он позволяет вам получить alter
запрос на добавление with schemabinding
в определение представления. Есть ли веская причина для этого? Имеет ли смысл по какой-то причине я не знаю? Я был под впечатлением, что WITH SCHEMABINDING
сек главная цель состояла в том, чтобы индексировать видИндексирование просмотров с помощью CTE
новый и улучшенный с более действий запроса
;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') не должен быть частью уникального определения индекса. –