基本的にいくつかのテーブルを結合しているビューがあり、ビューにインデックスがありません。ビュー(別のテーブルと結合)に対してクエリを実行すると、パフォーマンスが低下し、約10分かかります。ビューからベーステーブルを抽出して「別のテーブル」と結合すると、約20秒かかります。ビューを使用するロジックまたはベーステーブルを使用するロジックはまったく同じです。私はをチェックしました、そして彼らは異なる実行計画を取得します。なぜこれが起こるのか、何か考えはありますか?
ありがとう。
基本的にいくつかのテーブルを結合しているビューがあり、ビューにインデックスがありません。ビュー(別のテーブルと結合)に対してクエリを実行すると、パフォーマンスが低下し、約10分かかります。ビューからベーステーブルを抽出して「別のテーブル」と結合すると、約20秒かかります。ビューを使用するロジックまたはベーステーブルを使用するロジックはまったく同じです。私はをチェックしました、そして彼らは異なる実行計画を取得します。なぜこれが起こるのか、何か考えはありますか?
ありがとう。
SQL Serverは、キャッシュされた実行プランを使用している可能性があります(ビューから何かを最初に選択したときに基づいています。そのテーブルのサイズが大きくなり、最も効率的なプランを使用しなくなったため、パフォーマンスが低下した可能性があります)。
次を使用してビューを更新できます。
sp_refreshview [ @viewname = ] 'viewname'
または、ビューを完全に再構築して再実行し、新しい実行プランを生成します。ただし、後で同じパフォーマンスの問題が発生する可能性があります。この記事では、何が起こっている可能性があるかをさらに詳しく説明します。