質問

わかりました、私はSQLサーバーのインデックス付きビューについて混乱しています(2008年を使用)

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

AssignmentDetail

の実行計画を見るとき

select * from AssignmentDetail

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

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

このインデックス付きビューでは、私が何をすべきだと思っているのか、パフォーマンスの向上はないようです。また、他のすべてのインデックスを押す必要がないように、すべての列を使用してクラスター化されていないインデックスを作成する必要がありますか?

どんな洞察も大歓迎です

役に立ちましたか?

解決

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

select * 
from AssignmentDetail WITH (NOEXPAND)

他のヒント

インデックス付きビューのポイントはスピードアップしないことです

SELECT * FROM MyView

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

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

したがって、実際に異なるテーブルに存在する可能性のあるViewColumnaとViewColumnbにインデックスを持つことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top