HOME >> Tips >> Microsoft SQL Server

インデックス付きビューを作成する

2016/11/4
文書番号:20602

SQL Server ではビューにインデックスを設定してパフォーマンスの向上を図ることができます。

インデックス付きのビューを作成するには以下の条件があります。
  1. CREATE VIEW ステートメント実行時、ANSI_NULLSオプションとQUOTED_IDENTIFIERオプションがONに設定されていること。
  2. ビューで参照するベーステーブルの作成時にもANSI_NULLSオプションがONに設定されていること。
  3. ビューが参照しているのはベーステーブルのみで、他のビュー参照していないこと
  4. ビューで参照されるすべてのベーステーブルは、ビューと同じデータベース内に存在し、ビューと同じ所有者であること。
  5. ビューはWITH SCHEMABINDINGオプションを使用して作成されていること。
  6. ビューで参照されるユーザ定義関数は、SCHEMABINDINGオプションを使用して作成済みであること。
  7. ビューでは、テーブルとユーザ定義関数について、スキマー名.オブジェクト名の2つの要素で構成される名前で参照すること。
  8. ビュー内の式で参照される関数は決定的であること。決定的であるとは、関数の引数に同じ値を渡した場合、常に同じ値が返される状態を指す。これに対して、GETDATEやNEWID関数は、実行する度に異なる値が返されるので非決定的関数と言える。


【インデックス付きビューを作成する】


    
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    
    --ビューを作成する
    CREATE VIEW [dbo].[ビュー名] WITH SCHEMABINDING
    AS
    SELECT COL001
          ,COL002
          ,COL003
          ,COL004
    FROM   dbo.TABLE_A
    
    --クラスタ化インデックスを作成する
    CREATE UNIQUE CLUSTERED INDEX PK_インデックス名
    ON dbo.ビュー名 ( COL001,COL002 ) 
    
    --非クラスタ化インデックスを作成する
    CREATE NONCLUSTERED INDEX IDX_インデックス名
    ON dbo.ビュー名 ( COL003,COL004 ) 
    
    

【参考情報】

[TechNet] SQL Server 2005 インデックス付きビューによるパフォーマンスの向上
https://technet.microsoft.com/ja-jp/library/cc917715.aspx