2011-12-27 33 views
2

ビューからデータを取得するWindowsサービスがあり、ビューごとにデータが埋め込まれたテーブルが定義されています。ビューの最適化

ビューは、ビュー内にビューが3レベルまで深くできるように作られています。

最も外側のビューのパフォーマンスを向上させる方法を教えていただけますか?

パフォーマンス全体を改善する方法。

ありがとうございました。

EDIT:ビューの内側のビューを使用するのは良い戦略ではないと聞いていますが、それは本当ですか?

答えて

2
、全体で

パフォーマンスが

EXCEPTビュー

の構造に影響されない

あなたには、いくつかの内部(またはフィールドだけを選択していないもの)を処理する凝集体または力を使用している場合、クエリオプティマイザませへビューを展開します。

ビュー内のビューの戦略についてどのような - 事項を味、私はそれは美しいではないと思われるが、私は戦略8としてそれに名前を付けることはできません)

そしてに関するいくつかの単語は、全体的なをパフォーマンスを向上させる - それを1つのメッセージの中でそれに答えるために複雑な領域があると思うので、他の人や他の人の中のビューやビューに焦点を当てることなく、パフォーマンスを向上させるためにDBをチューニングしなければならないと思います。

0

は、私はそれが非常によくView Performance Question

SQL Serverの説明実行時に合計クエリを解決され、ここだと思うので、あなたが加入書いて、あなたが望んでいた列を選択したようにクエリプラン になります。 ビューにクエリに適切な結合のみが含まれている場合は、 のパフォーマンスはselect文を記述するよりも悪くないはずです。 ビューに実行中のクエリに適切でない結合がある場合は、パフォーマンスに問題が発生する可能性があります。

また、SQL Serverは、(例えば、システム・テーブルからデータを選択する)「ビューに探して」にいくつかの時間を費やしているので、ビューの実行時間は、その実行計画が、同じクエリのより少し大きくなります同一になります。

3
  • ビューは、彼らはDRYは常に(データベースには適用されません
  • 彼らは最適化されない
  • **彼らは、クエリをカプセル化するか、事前に計算していない
  • 実行時に展開されるマクロ
  • です

基本的に、ビューを削除します。あなたは通常それらを必要としません。

一般的なパフォーマンスチューニングでは、これは異なる複雑な質問です。通常、設計が悪く、コードが悪くて悪い習慣から始まります。

**インデックス付きビューまたはマテリアライズドビューは使用できますが、これらには使用制限があります