Die Indizierung von Ansichten mit einem CTE

So, ich habe gerade herausgefunden, dass SQL Server 2008 lässt Sie nicht index a Ansicht mit einem Tabellenausdruck in der definition, aber es ermöglicht Ihnen alter die Abfrage hinzufügen with schemabinding in der view-definition. Gibt es einen guten Grund dafür? Macht es Sinn, für einige Grund ich bin bewusst? Ich hatte den Eindruck, dass WITH SCHEMABINDINGs Hauptzweck war, um Ihnen zu erlauben index a Ansicht

neue und verbesserte mit mehr Abfrage Aktion

;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

Und den code, um den index zu erstellen

create unique clustered index [TestIndexName] on [dbo].[MyView]
( pat_id asc, drug_class asc, counts asc)
Nebenbei, selbst wenn es möglich wäre, diese index-Ansicht, die aggregierte Spalte (counts) sollte nicht Teil der eindeutigen index definition.

InformationsquelleAutor wootscootinboogie | 2013-03-26

Schreibe einen Kommentar