【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