模拟联合制作索引视图
-
25-09-2019 - |
题
我有以下表模式在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不能索引与工会视图...
解决方案
为什么一定要索引视图时,你可以使用一个适当的表:
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
据我所知,你可能要视图,以便您不必同步数据的麻烦。唯一的其他选择是不索引视图...
不隶属于 StackOverflow