以下に示すように、テーブル A と B の間に単純な結合があります。さらに、各テーブルには Or 演算子と組み合わせた条件があります。
SELECT /*+ NO_EXPAND */
* FROM IIndustrialCaseHistory B ,
IIndustrialCaseProduct A
where (
A.ProductId IN ('9_2') OR
contains(B.KeyWords,'%some text goes here%' ) <=0
)
and ( B.Id = A.IIndustrialCaseHistoryId)
ProductId には B ツリー インデックスが定義され、KeyWords には関数インデックスがあります。しかし、私の実行計画がこれらのインデックスを使用せず、テーブル アクセスをフルに実行する理由がわかりません。私がこのURL で見つけたように、NO_EXPAND 最適化のヒントは、実行計画でインデックスを使用する可能性があります (NO_EXPAND ヒントは、コストベースのオプティマイザーが、OR 条件または WHERE 句の IN リストを持つクエリの OR 拡張を考慮しないようにします)。しかし、定義されたインデックスの使用は見られませんでした
私のクエリでオラクルの問題は何ですか?!