ビューのインデックスがどのように機能するかを簡単な英語で説明してもらえますか? 私は、テーブルのインデックスについてかなり簡単に理解しています。ビューのインデックス作成は、基礎となるテーブルのインデックスに自然に任せることとどのように異なるのでしょうか?
3 に答える
テーブルを特定の行に制限するビューがあるとします。
create view dbo.vw_HotProducts
as
select * from dbo.Products where Hot = 1
このビューにインデックスを作成すると、インデックスにはホットな製品のみが含まれます。これは、ビューの結果を一時テーブルに格納することと比較できます。これは、複数の結合を持つ複雑なクエリに非常に役立ちます。基本的にそれらの出力はキャッシュされます。
インデックス付きビューの大きな欠点は、基になるテーブル データが変更されるたびに再作成されることです。これにより、インデックス付きビューの使用は、通常はデータ ウェアハウスやビジネス インテリジェンス環境で頻繁に変更されないデータに制限されます。
http://msdn.microsoft.com/en-us/library/aa258260(SQL.80).aspxを参照してください。
ビューに一意のクラスター化インデックスを作成すると、クラスター化インデックスを持つテーブルが格納されるのと同じ方法でビューがデータベースに格納されるため、クエリのパフォーマンスが向上します。
ビューは適切なビューからテーブルに変換されます。ビュー定義は、このテーブルを更新するために使用されます。
Oracle では、これらを「マテリアライズド ビュー」と呼んでいます。
ビュー自体は実際のものでも「永続的」でもなく、パフォーマンス上の利点はありません。これは単に展開されたマクロです。
インデックスを追加すると、物理的に存在する (永続化される) ため、オプティマイザはその使用を検討します。それではマクロではありません。
オラクルはそれらを「具体化されたビュー」と呼んでいますが、これはより良い名前です。
関連するFYI:計算列には、同じことを行うPERSISTEDオプションがあります...