インデックス付きビュー


SQL Server2008 ではどのEditionかに関わらず、インデックス付きビューを作成できる
作成するSQLは以下の通り

CREATE VIEW [dbo].[V_hoge]
WITH SCHEMABINDING
AS
SELECT                  hoge1, cast(hoge as int) as hoge_int
FROM                     dbo.zz_hoge


GO

CREATE UNIQUE CLUSTERED INDEX PK_V_Hoge
    ON V_Hoge (hoge_int);

GO


ビューにインデックスを付与するには以下の条件がある


・ビューをWITH SCHEMABINDINGオプションで作成する
・SELECT * ではなく列名をきちんと定義する必要がある




主なデメリットとしては以下の通り

・インデックスの領域が必要
・元となったテーブルが更新されると再作成が発生する(複数テーブルを使用したビューは特に注意)



動作確認環境:SQL Server 2008 Enterprise