web-dev-qa-db-ja.com

ビューがスキーマバインドされていないため、ビュー 'View_Table_Name'にインデックスを作成できません

ストアドプロシージャ(SQL-Server)でビューを使用しています。パフォーマンスを改善するために、そのビューのINDEXを作成しようとしました。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER VIEW VW_Table_Name
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO
CREATE UNIQUE CLUSTERED INDEX Index_Name ON [VW_Table_Name](Col1)
GO

ここで私はのようなエラーを取得しています

メッセージ1939、レベル16、状態1、行1ビューがスキーマバインドされていないため、ビュー 'VW_FML'にインデックスを作成できません。

SQL Serverでビューのインデックスを作成できますか?

51
Jagadeesh

インデックス付きビューには多くの制限があります。サブクエリ、ユニオン、外部結合などはありません。詳細については この記事 を参照してください。ただし、あなたの場合は、スキーマバインディングを使用してビューを作成するだけです。

CREATE VIEW VW_Table_Name WITH SCHEMABINDING
AS
SELECT Col1,Col2,Col3 FROM Table_Name 
GO
75
Joe Stefanelli

Indexed ViewまたはMaterialized Viewを作成しようとしているためです。ビューの上部にクラスター化インデックスを作成する場合、ビューに "WITH SCHEMABINDING"オプションが必要です。

ビューはストアドクエリに他なりません。インデックスを作成する場合、インデックスはそのクエリを使用してそのテーブルで実行します。この場合、テーブルが変更されないようにする必要があります。下に。したがって、この制約を強制することにより、SQL Serverはすべてが同期していることを確認します。

5
Manoj Pandey