Orlofsky2017/06/12 05:48yubaさん チューニングできるか調査する必要があります。質問者からSQLやcreate table, create index, 実行計画、各テーブルのレコード件数などが提示されなければなりませんが。
yuba2017/06/12 06:31もう少し真面目にコメントしますと、チューニングで不効率なクエリを「とても速く」することは可能な場合がありますが、「必ず○○秒以内に終わる」ことを保証することはできません。データにもプロセスにも様々な状態がありますので。すると、絶対にタイムアウトしてほしくないという要件に対してチューニングでどんなに効率化しても目的を達成することはできないのです。唯一の方法は「タイムアウトしないように設定変更する」となるわけです。
Orlofsky2017/06/12 07:29確かにstatement_timeoutの設定がいちばんでしょうね。Oracleで処理時間を十分の一にチューニングできたこともあります。お客様によっては現場に入って調べたら、同じ列名なのにテーブルによってデータ型が違っている列がいっぱいあって、何千万行もあるテーブルで暗黙の型変換で全件走査が多発しているのにテーブルは変更してはならないとか、ほとんどのSELECT文のFROM句にテーブルかビューが1つしか記述していないのに、SQLを変更しないでチューニングしてくれとか、小さなDBサーバーがいっぱいあって、DB LINk付きのMATERIALIZED VIEWを多用してリフレッシュがボトルネックになっているのにスケールアップしないでチューニングとか、難しい注文で苦戦したことも少なくないです。涙