ここではORACLEデータベースのSQLが遅い原因を3つ紹介しています。
SQLのチューニング方法については↓で詳しく解説していますので参考にしてください。
>>【SQL】SELECT文のチューニング方法まとめ
SQLのレスポンスが遅い原因3つ
1.統計情報が古い、最新でない
統計情報が最新でないというのが最もよく発生するパターンです。
とりあえず統計情報を取得してみるだけでも解決することがあります。
>>【ORACLE】表の統計情報を取得するSQL
>>【ORACLE】表の統計情報取得日を確認するSQL
システムを開発するときは、統計情報の取得のタイミングも設計することをおすすめします。
統計情報が最新でない場合、ORACLEオプティマイザは最適な実行計画を立てることが出来ません。そのため、非効率なアクセスパスで、データを取得することにより、レスポンスが悪化することがあります。
>>【ORACLE】オプティマイザと実行計画について
2.SQLが最適ではない
SQLが最適でないことがあります。SQLのコーディングは自由度が高く、結果は同じでも書き方や呼び出す関数など多岐に渡ります。
また、SQLはデータを取得するアルゴリズムを意識せずに書くことが出来る一方で、アルゴリズムを意識しなければ性能が十分に発揮できないことがあります。
自由度の高さ、アルゴリズムを意識したコーディングが出来ていないために、SQLが遅くなっていることがあります。
SQLでパフォーマンスを向上させるには、SQLの設計、コーディングでORACLEアーキテクチャやアルゴリズムを意識したコーディングが必要になります。
既に遅くなっているSQLについてはチューニングする方法があります。
チューニングの方法については↓で詳しく解説していますので参考にしてください。
>>【SQL】SELECT文のチューニング方法まとめ
3.性能検証が十分ではない
SQLのパフォーマンスに関して、性能検証が十分に出来ていないことがあります。
検証フェーズでは、検証機と呼ばれる本番機に劣るスペックのマシンで、本番よりも少ないデータ量や偏りのあるデータを使って検証することが多いです。
特にデータ量が少ない場合は、本番で大量のデータを処理するとパフォーマンスが落ちてしまうということがよくあります。
これは大量のデータを処理すると単純に時間がかかってしまったり、実行計画が変わってしまうことが一因です。
検証フェーズから十分なデータ量で検証を行いましょう。
十分なデータ量を準備できない場合でも、SQLに事前にヒントを書き、本番データを想定した実行計画にすることも効果的です。
最後に
最後までお読みいただきありがとうございます。
SQLのチューニング方法は↓で紹介していますので参考にしてください。
>>SELECT文のSQLチューニング方法まとめ