Frage

Ich habe das folgende Tabellenschema in SQL Server 2005, und ich möchte es in eine indizierten Sicht denormalize für einige Abfragen ich schreibe, bis ich die strukturellen Änderungen dauerhaft machen.

Die Tabellen werden folgen als

Writing
(
DocumentSerial int
Grader1_ID int
Grade_1 int
Grader2_ID int 
Grade_2 int 
Grader3_ID int 
Grade_3 int
)

Users
(userID int,
firstname,
lastname
)

Ich mag einen Tisch mit einer einzigen Zeile für jedes grader / Klasse / Dokumente Kombination, wo der grader entweder grader 1, grader 2 oder grader 3

Die Ansicht Ich schrieb Anwendungen UNION, so dass es nicht Index tut:

select documentSerial,grader1_id as grader_id, grade_1 as grade ,1 as sequence
 from Writing w inner join User U on w.grader1_id=u.userid
UNION
select documentSerial,grader2_id as grader_id, grade_2 as grade ,2 as sequence
 from Writing w inner join User U on w.grader2_id=u.userid
UNION
select documentSerial,grade31_id as grader_id, grade_3 as grade ,3 as sequence
 from Writing w inner join User U on w.grader3_id=u.userid

Das Problem ist - SQL nicht indizieren kann die Ansicht mit Union ...

War es hilfreich?

Lösung

Warum muss es eine indizierte Sicht sein, wenn Sie eine richtige Tabelle verwenden:

SELECT x.*
  INTO normalized_table
  FROM (select documentSerial,grader1_id as grader_id, grade_1 as grade ,1 as sequence
          from Writing w 
          join User U on w.grader1_id = u.userid
        UNION ALL
        select documentSerial,grader2_id as grader_id, grade_2 as grade ,2 as sequence
          from Writing w 
          join User U on w.grader2_id = u.userid
        UNION ALL
        select documentSerial,grade31_id as grader_id, grade_3 as grade ,3 as sequence
          from Writing w 
          join User U on w.grader3_id = u.userid) x

Ich verstehe, dass Sie wahrscheinlich die Ansicht möchten, so dass Sie den Aufwand nicht über Daten zu synchronisieren. Die einzige andere Alternative ist es, nicht Index der Ansicht ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top