3

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 年後にこれを確認すると、私の結論は正しくないと思います。マテリアライズド ビューのマッチングは非常に脆弱なプロセスであり、何年にもわたって見つけた明確なルールはありません。

確かに、次のような役割があります。

  • 結合数
  • 述語の存在
  • ビューとクエリの両方での結合順序
4

1 に答える 1

2

あなたの質問が正確に何であるかについて、私は少しあいまいです。しかし、これはあなたが望むものを与えると思います:

http://msdn.microsoft.com/en-us/library/ms181151.aspx

SQL Server がクエリでビュー インデックスを使用するタイミングを制限する、奇妙で恣意的に見える条件が多数あります。このページでは、SQL Server 2008 について説明しています。

于 2010-05-22T08:39:13.247 に答える