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のいずれかである、採点者/採点/ドキュメントの組み合わせごとに1行のテーブルが必要です。

私が書いたビューは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 に答える