1

我在 SQL Server 2005 中有以下表架构,我想将它非规范化为我正在编写的一些查询的索引视图,直到我可以使结构更改永久化。

表格如下

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
)

我想要一个表,其中每个评分者/评分/文档组合有一个单行,其中评分者是评分者 1、评分者 2 或评分者 3

我写的视图使用 UNION,所以它不索引:

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

问题是 - SQL 不能用联合索引视图......

4

1 回答 1

1

当您可以使用适当的表时,为什么它必须是索引视图:

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

我知道您可能想要该视图,这样您就没有同步数据的麻烦。唯一的另一种选择是不索引视图...

于 2010-11-18T04:48:38.107 回答