私は SQL Server インデックス付きビュー (または Oracle マテリアライズド ビュー) に精通しており、OLAP アプリケーションでそれらを使用しています。それらには、既存のコードを変更することなく、実行計画を奪い、それをインデックス付きビューに再マップできるという非常に優れた機能があります。
すなわち。非常に高価な結合である SPROC があったとします。
SELECT [SOME COLUMNS]
FROM Table1 INNER JOIN Table2 [詳細]
INNER JOIN Table3 [BUNCH MORE JOINS] ...
同様の結果セットを保持するインデックス付きビューを作成した場合、クエリ オプティマイザーは、ベース テーブルではなくインデックス付きビューに SPROC を送信する可能性が非常に高く、パフォーマンスが大幅に向上します。
ここで、 OLTPでインデックス付きビューを使用したいとします!? つまり、ほとんどの OLTP (このサイトなど) は比較的読み取り負荷が高く、高価な結合がある場合は、それらを大幅に高速化し、ロックの競合を潜在的に減らすことができます ( http://www.codinghorror.com/blog/archives/001166.html)。さらに良いのは、コードを変更する必要がなく、インデックス付きビューを作成するだけです。
しかし、これは、これらのデータのコピーをインデックス付きビューに保持する必要があるため、データベースが大きくなることも意味します...
OLTP の競合や速度の問題を解決するために、インデックス付きビューを使用したことのある人はいますか? これが使用されているのを見たことがないのはなぜですか?