SQLインデックス付きビュー:データが変更された場合に何が起こります
質問
私は、インデックス付きビュー何しているundestandしかし、私は、下にあるテーブル(複数可)内のデータが変更されたとき、正確に何が起こるか疑問に思いますか? 廃棄されたビュー全体のキャッシュだけで行を変更ODされていますか。
私はホテルの可用性(+ 100kの記録)とIMHOインデックス付きビューを可能性が検索に使用されるいくつかのテーブル(5)上の非常に複雑なクエリは、パフォーマンスが大幅に向上しています。 しかし、データ(数行)は、(部屋が販売された、管理者のATCに変更された自由な客室を提供しています。)頻繁に変更され、ビューが1行のみが変更されたそれぞれの時間を再建だろうと、私のアプリのためのボトルネックになります。
、または任意のアイデアどのように "キャッシュ" 非常にcoplexクエリ?
ありがとうございます。
解決
TechNetドキュメントから:
通常のインデックスとは異なり、単一の行 参加のいずれかに挿入 テーブルには、複数行の変更が発生することがあり インデックス付きビューインチそれの訳は 単一の行が複数と結合することができます 別のテーブルの行。同じことがあります 更新や削除のために真。 その結果、メンテナンス インデックス付きビューは、より高価であり 上のインデックスを維持するよりも テーブルます。
ソース:
http://technet.microsoft.com/en-us /library/cc917715.aspx#XSLTsection124121120120する
すなわち。行は必ずしもその全体ビューを再作成/更新することなく、該当する場合に更新されるかのように聞こえる。
他のヒント
私は、SQL Serverを実行していると仮定しています。 100K +行はたくさんではありません。あなたが5ishのテーブルを結合している場合、私はあなたがインデックス付きビューを導入を検討する前に、あなたが参加している列に索引が網羅されていることを確認したことを示唆しています。直接クエリでのボトルネックを見つけるために、クエリアナライザを使用してください。あなたはとても小さいテーブルの上にパフォーマンスの問題が発生している場合は、おそらく厄介なテーブルスキャンがそこにあります。