4

OK、SQL Server のインデックス付きビューについて混乱しています (2008 を使用)

私はと呼ばれるインデックス付きビューを持っています

課題の詳細

の実行計画を見ると

select * from AssignmentDetail

インデックス付きビューが抽象化することになっている他のすべてのテーブルのすべての基になるインデックスの実行計画を示しています。

実行計画は単に PK_AssignmentDetail (ビューのクラスター化インデックスの名前) のクラスター化インデックス スキャンになると思いますが、そうではありません。

このインデックス付きビューではパフォーマンスが向上しないようです。どうすればよいですか? 他のすべてのインデックスにヒットする必要がないように、すべての列を含む非クラスター化インデックスも作成する必要がありますか?

どんな洞察も大歓迎です

4

2 に答える 2

5

Enterprise Edition の SQL Server は、インデックス付きビューが存在する場合にそれを探して利用できるほどスマートです。ただし、Enterprise エディションを実行していない場合は、次のように、インデックス付きビューを使用するように明示的に指示する必要があります。

select * 
from AssignmentDetail WITH (NOEXPAND)
于 2010-05-07T14:22:43.537 に答える
2

インデックス付きビューのポイントは、高速化ではありません

SELECT * FROM MyView

パフォーマンスの向上に役立つのは、ビュー自体の列のインデックスです。

SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'

したがって、実際には異なるテーブルに存在する可能性のある ViewColumnA と ViewColumnB にインデックスを作成できます。

于 2010-05-07T14:24:07.850 に答える