SQL Server 2008 R2 がクエリへの結合を含むインデックス付きビュー (マテリアライズド ビューとも呼ばれます) を自動的に照合できる場合の経験はありますか?
たとえば、ビュー
select dbo.Orders.Date, dbo.OrderDetails.ProductID
from dbo.OrderDetails
join dbo.Orders on dbo.OrderDetails.OrderID = dbo.Orders.ID
まったく同じクエリに自動的に一致させることはできません。このビューから直接選択すると、with (noexpand)
実際には、インデックス付きビューのクラスター化インデックスをスキャンするはるかに高速なクエリ プランが得られます。SQL Server にこのマッチングを自動的に行わせることはできますか? かなりの数のクエリとビューがあり、OR マッパーを使用しているため、インデックス付きビューを毎回手動で参照したくありません。
SQL Server 2008 R2 のエンタープライズ エディションを使用しています。
編集:解決策を見つけました。SQL Server 2008 R2 は、3 つ以上の結合を持つインデックス付きビューを自動的に照合しません。おそらく、最適化プロセスが非常に遅くなるでしょう。
編集 2: 質問が私によって作成されてから 2 年後にこれを確認すると、私の結論は正しくないと思います。マテリアライズド ビューのマッチングは非常に脆弱なプロセスであり、何年にもわたって見つけた明確なルールはありません。
確かに、次のような役割があります。
- 結合数
- 述語の存在
- ビューとクエリの両方での結合順序