インデックス付きビュー (Indexed View、インデックス付き物理ビュー) は、クラスタ化された一意のインデックスが作成されたビュー (VIEW) です。これにより、クエリの結果を物理的にディスクに保存し、インデックスを使用してアクセスを高速化することができます。
利点:
制限:
TEXT、NTEXT、IMAGE データタイプや、一部の関数は使用できません)。CREATE VIEW dbo.SalesSummary WITH SCHEMABINDING AS SELECT SalesPersonID, COUNT_BIG(*) AS SalesCount, SUM(TotalDue) AS TotalDue FROM dbo.Sales GROUP BY SalesPersonID; GO CREATE UNIQUE CLUSTERED INDEX idx_SalesSummary ON dbo.SalesSummary (SalesPersonID);
Q: すべてのビューはインデックス (クラスタ化) を作成できますか?
A: いいえ、インデックスを作成できるのは、制約を完全に満たすビューのみです (たとえば、外部参照がないこと、集計関数が整合していることなど)。そうでない場合、インデックス作成のクエリはエラーを返します。
ストーリー
銀行システムの実際のプロジェクトで、集計レポートの取得を加速する必要がありました。テーブルの更新負荷を分析せずにインデックス付きビューを作成しました。大量挿入操作により、主要なテーブルのパフォーマンスが大幅に低下しました。
ストーリー
専門家は、外部テーブルへのJOINを指定したVIEWをインデックス化できると誤って考えました。インデックス作成クエリは"Cannot create index on view with non-deterministic functions"というエラーで終了しました。プロジェクトアーキテクチャを修正するのに一日を費やしました。
ストーリー
大規模なeコマースプロジェクトで、基本テーブル "Products" のデータ更新がブロッキングの原因となりました。原因は、大量のインデックス付きビューがあり、集計によって数百万行が影響を受ける場合のトランザクション管理が不適切だったことです。