2009-02-22 6 views

答えて

3

インデックス付きをSQL Server 2000/2005/2008で使用すると、Microsoftによると、パフォーマンスの低下があります。


1.インデックスをあらかじめ計算してインデックスに格納することで、クエリの実行中に高価な計算を最小限に抑えることができます。
2.テーブルを事前結合し、結果のデータセットを保存することができます。
3.結合または集計の組み合わせを格納することができます。

しかし、表の索引と同様に、ビューの索引では変更のオーバーヘッドが発生します。したがって、実行時の速度向上の利点がビューのインデックスの更新にかかる時間を超える場合にのみ、ビューにインデックスを追加してください。

以下のリンクは、これに関する詳細情報(何をいつ利用するか)を示しています。

  1. SQL Server 2000/2005 Indexed View Performance Tuning and Optimization Tips
  2. Improving Performance with SQL Server 2000 Indexed View
  3. See performance gains by using indexed views in SQL
+2

この記事をよく読んでみると、本当に別の動物である「マテリアライズドビュー」について話していることがわかります。これは本当に特別な形式の表を作成します。 – dkretz

1

ほとんどのデータベースでは、機能的には互換性があります(マテリアライズド・ビューは無視されますが、これはまったく異なるものです)。ビューを作成する一般的な理由は2つあります。 1.抽象化(および列エイリアシング)メカニズム、および2.アクセス権およびアクセス制御。しかし効率に関しては、それは問題ではない。それの

+1

一部のデータベースでは、ビューがネストされているときにパフォーマンスの問題が発生します。 –

+0

あなたは何か参考文献を持っていますか?それは非常にありそうもないようです(それが私が「ほとんどのデータベースで」と言った理由ですが)。 – dkretz

+0

はい。 Oracleでは、ネストされたビューは悪い動作をする可能性があります。拡張クエリーと、Oracle内の複数のビューと定義された同じクエリーを比較するときは、これを経験しました。 –

0

と思いますこのよう:

ビューは、サーバー上で住んでいるとSQLエンジンによってコンパイルされただけのSELECT文です。

通常、ビューはテーブルからの結果を制限/簡略化するために使用されます。

よろしくK

1

これは、データベースとビューの定義に依存します。

列のエイリアスまたは簡単な計算を実行する単純なビューは、クエリを直接作成するのと同じではありません。

しかし、場合によっては、ビューがはるかに遅くなることがあります。例:Oracleでは、ビューのクエリをあまり入れ子にすると(たとえば、あるビューが別のビューを別のものをテーブルとして使用し、別のビューを別のビューを使用するなど)、ひどいパフォーマンスを作成できます。

通常、問題の特定のデータベースとクエリでテストする必要があります。

+0

ビューを使用すると、照会がそれを表すインライン副選択よりも遅くなると主張していますか? – Khb

+0

非効率な場合は、ビューが必要以上にフィールドやジョインを不適切に追加しているためです。しかし、それは同等の単一SQL文と同じパフォーマンスです。 – dkretz

+1

いいえ、私たちはSAMEクエリを使用しようとしましたが、ビューやサブクエリを持つ選択項目でのみ使用しました。後者ははるかに高速にすることができます。どうして?ダニー、オラクルは謎に満ちていて、良い方法ではありません。 –

関連する問題