質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.81%

Oracleの実行計画が書き換わる条件として、「新たなデータ参照用のSQL文の実行が増える」というものは存在するか?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 554

teruq

score 12

いつも助けていただきありがとうございます。

表題の件について、
Oralce Databese12cを利用しているシステムにおいて、
システムを委託しているベンダーより

現在の検索処理に最適化されている実行計画が、新たな「検索」が増加することにより
実行計画が変化する可能性があり、その結果、既存の処理の検索効率が悪化する可能性がある。

という指摘を受けております。(詳細は割愛させていただきます…)
※新たな「検索」とは、WHERE句が異なる新たなSELECT文が増えるという意味です。

書き込みが増えることにより、実行計画が書き換わることがあるのは理解できるのですが、
本当に新たな検索が増えるだけで既存の実行計画は書き換わるのでしょうか?

==========追記==========

いろいろと割愛しすぎてわかりにくくなり申し訳ございません。

下記3画面が存在するWebサイトにおいて、

画面①:記事の一覧を取得し表示(SELECT * FROM interviews;)
画面②:タグで絞り込んだ記事の一覧を取得し表示(SELECT * FROM interviews LEFT OUTER JOIN tags ON ...)
画面③:ユーザの一覧を取得し表示(SELECT * FROM users;)

新規画面として「未回答の記事一覧を取得(SELECT * FROM interview WHERE kaitou = false)」する画面を作った場合、
この新規画面のSQLにより、①~③の画面でデータ取得用の実行計画に影響はあるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

新たな「検索」が増加する

これが検索条件の追加という事なら、当然実行計画は変わる可能性はありますね。
検索項目を追加できる仕組みのEUCは良く見かけますが、そういった類なんでしょうか?

もしそうなら、動的に変更される検索用テーブルなどを用いた設計でなければ、性能に影響は出るでしょうね。

追記

新規画面として「未回答の記事一覧を取得(SELECT * FROM interview WHERE kaitou = false)」する画面を作った場合、この新規画面のSQLにより、①~③の画面でデータ取得用の実行計画に影響はあるのでしょうか?

新規の画面で、今までになかった抽出条件のSQLが発生しても、従来の画面で発行しているSQLに影響はありません。
新規画面のSQLに合わせて、チューニングの為にインデックスを追加したりすると従来の画面でのSQLの実行計画に影響が出る場合はあります。


開発を依頼した場合の見積もりの内容について疑問を持たれているように見受けられます。
新規で開発を依頼した画面のチューニングを施すでしょうから、そのチューニングが他の画面に影響が無いかどうか調査し、結果的に既存の機能の改修が発生する事はありますよ。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/09 14:58

    ご回答有り難うございます。
    「新たな検索」が非常に曖昧でしたね。申し訳ございません。

    新たな「検索」とは、WHERE句が異なる新たなSELECT文が増えるという意味で使っておりました。

    質問に追記させていただきましたので、合わせてご確認いただけますと幸いです。

    キャンセル

  • 2019/04/09 19:20

    なるほど、、、単純にSQLを追加するだけではない可能性があるということですね。
    頂いた内容をベースに色々質問してみようと思います!ありがとうございました!

    キャンセル

0

パフォーマンス絡みの質問はできるだけ具体的な内容の方が適切な回答が付き易いです。

本当に新たな検索が増えるだけで既存の実行計画は書き換わるのでしょうか?

新たな検索が増えるだけ、ってのはわかりませんが、原因がわからないけどいつの間にか実行計画が変わった、ってのはあり得ます。データの追加・変更・削除があるテーブルにはきちんと統計情報を取得していないと実行計画が適切ではなくなってしまうことがあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/09 14:55 編集

    ご回答有り難うございます。
    「新たな検索」が非常に曖昧でしたね。申し訳ございません。

    新たな「検索」とは、WHERE句が異なる新たなSELECT文が増えるという意味で使っておりました。

    データの追加・変更・削除が原因でオプティマイザが実行計画を書き換えるのは良いのですが、
    新たな検索(SELECT文)が増えただけで実行計画が書き換わるのかが知りたかったのです。

    質問に追記させていただきましたので、合わせてご確認いただけますと幸いです。

    キャンセル

  • 2019/04/09 15:40

    >①~③の画面でデータ取得用の実行計画に影響はあるのでしょうか?

    実行計画に影響はないです。ですが、実行計画が変わらないことを保証するものではありません。
    将来なくなる機能ですが、DBMS_OUTLNパッケージhttps://docs.oracle.com/cd/E82638_01/arpls/DBMS_OUTLN.html#GUID-9ECBE2FC-FA2A-4A39-AA4A-395E6C4EDA71 を使うことも考えられます。通常はWebのレスポンス時間やバッチの実行時間を記録して、データ量が増えていないのに処理時間が増えていないかチェックしたり、必要に応じてAWRやstatspack のスナップショットを取得する機能も作り込むことがあります。
    提示されたSELECT文ではORDER BYさえないので実用に耐えられないのでは?
    差し支えない限り、create table, create index, join している文の全部も提示されたほうが良いです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.81%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Oracleに関する質問
  • Oracleの実行計画が書き換わる条件として、「新たなデータ参照用のSQL文の実行が増える」というものは存在するか?