【ORACLE】ビュー(VIEW)が遅い原因とSQLチューニング方法


ここではORACLEデータベースで、ビュー(VIEW)が遅いときに考えられる原因とチューニング方法を紹介します。

マテリアライズドビューを使ったSQLが遅い場合は↓を参考にしてください。
>>マテリアライズドビューが遅いときの原因とチューニング方法

ビューとは

ビューとは、あるテーブルからSELECT文を実行して取得した仮想的な表です。

ビューについての詳しい内容や作成方法は↓で紹介していますので参考にしてください。
>>【ORACLE】ビューを作成・更新・削除するSQL

ビュー(VIEW)を使ったSQLが遅くなる原因

ここからはビューを使ったSQLが遅くなったときに考えられる原因を紹介します。

ビューが遅い原因は定義されたSELECT文が遅い

ビューは、ビューをアクセスすると、CREATE VIEWで定義された問合せ(SELECT文)を都度実行します。マテリアライズドビューと違い、予め用意されたデータを返している訳ではありません。

つまり、ビューへのSELECTが遅いときは、ビューで定義されたSELECT文の実行が遅いときです。

ビューには複雑なSQLも定義することが出来ます。まずはビューにどのようなSQLが定義されているか確認しましょう。
>>【ORACLE】ビューの一覧や定義を確認するSQL

SELECT文を特定することが出来たら、実行計画を確認し、具体的にどのテーブルへのアクセスに時間がかかっているのか確認します。
>>【ORACLE】SQLの実行計画を取得する方法
>>【ORACLE】SQLの実行計画の見方

ビューのSELECT文が遅くなる原因

VIEWのSELECT文が遅くなる原因で考えられることは、通常のSELECT文と同じです。

急なデータの増減があり、統計情報がデータの最新状態に合っていないことやSQLが複雑になっていることが考えられます。

まずは統計情報が最新か確認してみましょう。
>>【ORACLE】表の統計情報取得日を確認するSQL

統計情報が最新であれば、他にSQLが遅い原因がないか確認してみましょう。
>>SQLが突然遅くなる原因と対応方法

チューニングする方法

SQLの実行計画を解析し、遅い原因が判明すればチューニングをしましょう。

単純に統計情報を取得するだけでれば、「【ORACLE】表の統計情報を取得するSQL」で統計情報を取得します。

SELECT文のチューニングが必要な場合はSELECT文をチューニングします。
SELECT文のテーブルや条件に合わせてインデックスを作成するなどチューニングをしていきます。
>>SELECT文のSQLチューニング方法まとめ

まとめ

ビューを使ったSQLが遅くなる原因は、CREATE VIEWで定義されたSELECT文が遅いことです。

ビューへアクセスすると、CREATE VIEWで定義されたSQLが都度実行されるので、SELECT文が遅いとビューへのアクセスが遅くなります。

まずはビューの定義を確認してみましょう。
>>【ORACLE】ビューの一覧や定義を確認するSQL