ストアドプロシージャ(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でビューのインデックスを作成できますか?
インデックス付きビューには多くの制限があります。サブクエリ、ユニオン、外部結合などはありません。詳細については この記事 を参照してください。ただし、あなたの場合は、スキーマバインディングを使用してビューを作成するだけです。
CREATE VIEW VW_Table_Name WITH SCHEMABINDING
AS
SELECT Col1,Col2,Col3 FROM Table_Name
GO
Indexed ViewまたはMaterialized Viewを作成しようとしているためです。ビューの上部にクラスター化インデックスを作成する場合、ビューに "WITH SCHEMABINDING"オプションが必要です。
ビューはストアドクエリに他なりません。インデックスを作成する場合、インデックスはそのクエリを使用してそのテーブルで実行します。この場合、テーブルが変更されないようにする必要があります。下に。したがって、この制約を強制することにより、SQL Serverはすべてが同期していることを確認します。