アンチジョインの結合方法が悪い

NOT EXISTS句で条件を絞ろうとした場合、オラクルは
XXXX YYYY ANTI または XXXX YYYY RIGHT ANTI
といったプランを立てる。

XXXX YYYY の種類は HASH JOIN、MARGE JOIN、NESTED LOOPがある。

HASH JOIN (RIGHT) ANTIして欲しいのにMARGE JOIN (RIGHT) ANTIのプランを
立ててしまい、遅くなる場合がある。

こんな場合は

SELECT *
FROM T_XXX T1
WHERE NOT EXISTS
(SELECT /*+ HASH_AJ */ 0 FROM T_YYY T2 WHERE T1.ZZNO = T2.ZZNO)

のように、HASH_AJヒントをつける。

タグ:

+ タグ編集
  • タグ:
最終更新:2010年09月01日 13:20
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。