0

CONNECT BY以下のようなandSTART WITHステートメントを使用したクエリがあります。IN 句のクエリは、実行に 5 秒もかからず、3000 行が返されます。fact_table20M のレコードが含まれています。このクエリの実行には永遠に時間がかかるため、以下のこの SQL を最適化するにはどうすればよいですか :(

SELECT DISTINCT CONNECT_BY_ROOT a.dst_ID_key AS root_ID_key, a.src_ID_key
  FROM fact_table a
  CONNECT BY NOCYCLE PRIOR a.src_ID_key = a.dst_ID_key
   START WITH a.dst_ID_key IN (SELECT b.ID_key
                           FROM TableA b
                           JOIN TableB c
                             ON (c.name = b.name AND c.school = b.school)
                          WHERE b.status = 'Active')
4

1 に答える 1

0

「in」を使用すると非常に遅くなります。
このデータがリアルタイムの更新を必要としない場合。
これを試すことができると思います:
1、distinct を使用しないでください
2、'in' の代わりにテーブル接続を使用して
ください 3、マテリアライズド ビューを使用してください
。: )

于 2011-10-14T06:45:42.960 に答える