SQL Serverインデックス付きビュー
-
04-10-2019 - |
質問
わかりました、私は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にインデックスを持つことができます。
所属していません StackOverflow