首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟联合以创建索引视图

模拟联合以创建索引视图
EN

Stack Overflow用户
提问于 2010-11-18 12:37:46
回答 1查看 689关注 0票数 1

我已经在SQL Server2005中获得了以下表架构,并且我想将其反规范化为索引视图,用于我正在编写的一些查询,直到我可以使结构更改永久生效为止。

表如下所示

代码语言:javascript
复制
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,所以它不会索引:

代码语言:javascript
复制
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不能索引带有union的视图...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-18 12:48:38

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

代码语言:javascript
复制
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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4211716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档