私は以下のようなクエリを持っています。テーブルA、T、Sは約100万行、Pは1億以上の行を持っています。私はこのクエリにインラインビュー "temp"を新たに導入し、パフォーマンスが大幅に低下しました。 temp用に取得されたデータはほとんど50行で、このインラインクエリは単独で実行されたときにスナップインで実行されます。Oracleのインラインビューでのパフォーマンスの問題
自動トレース統計では、これを追加した後にtempを9桁の数字に導入する前に、6桁の数字から「一貫性のある取得」の数が大幅に増加しています。また、LAST_CR_BUFFER_GETSの90%以上が「一時」ビューに含まれています。このビューのデータを一時テーブルに抽出し、そのテーブルを結合の一部として使用すると、パフォーマンスは非常に良いですが、その解決策は私にとっては実際には実現できません。
私はこの質問が非常に一般化されていることを知っていますが、このインラインビューを使用するにあたって何かが間違っているのではないかと思います。 インラインビューでは、このデータを一時テーブルに格納するのと同じパフォーマンスが得られませんか? 有効な方法でこのビューを使用し、パフォーマンスを向上させるためにOracleに助言を与える方法はありますか。
select t.id,
a.date
from A a,
T t,
P p,
S s,
(select id
from S,
R
where s.id = r.id
and r.code = 10
r.code1 = 20
r.name = 'string1') temp
where ...cond1
...cond2
...cond2
s.id = temp.id
こんにちは、あなたのクエリプランを投稿できますか? –
実際のクエリ(あなたには店舗全体に構文エラーがあります)と説明計画、テーブルサイズなどを投稿して、開始することができます。 – Ollie
サブセレクトのカーディナリティ推定値のような音が途切れています。 [このドキュメントを読む](http://www.oracle.com/technetwork/database/focus-areas/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf) – Gaius