0

基本的に複数のビューから複数の列を取得するクエリを作成しています。パフォーマンスを向上させるために、各ビューにインデックスを付ける方がよいでしょうか。

クエリ、つまりAからGはビューです

SELECT A.C1, B.C1
FROM A INNER JOIN B on A.C3=B.C3 
Inner join C on C.C2 = B.C2
inner join D on D.C4 = C.C4
...
Inner join H ON H.C5 = G.C5
where <some condition>

各ビュー(AからH)は、異なるテーブルからデータをプルしています。どのビューにもインデックスが付けられていません(ビューのツリー内でINDEXフォルダーを展開しても何も表示されません)。パフォーマンスを向上させるために、これらの各ビューにインデックスを追加する必要がありますか?その場合、ON JOIN句に使用している列にインデックスを追加する必要がありますか?

ありがとうございました

4

1 に答える 1

1

まず、[実際の実行プランを含める]を有効にし、クエリを実行して、パフォーマンスの低下がどこにあるかを確認します。考えられる原因として「テーブルスキャン」を探します。

明らかなものが見つからない場合は、[クエリ]->[データベースエンジンチューニングアドバイザでクエリを分析する]を試してください。SQLサーバーは、追加するいくつかのインデックスを提案します。それらすべてを適用するだけでなく、既存のクエリと比較して、重複を追加しすぎていないことを確認してください。

nkjが言ったように、ビューにインデックスを付ける前にテーブルのクエリを最適化します。

于 2013-01-18T13:57:24.583 に答える