0

以下は、私が実行しているクエリです。

select col1, col2 from table1 where col1 in (select table2.col1 from table2) and col2 = 'ABC' ;
  • table1 では、col2 でインデックスを使用できますが、col1 で使用できるインデックスはありません。
  • table1 に「ABC」のレコードが約 400 万あります。
  • table1 の合計サイズは約 5000 万です。
  • table2 のサイズは小さくなっています。約100万。(このテーブルにはインデックスはありません)

クエリが表示されるまでに多くの時間がかかります。「in (select table2.col1 from table2)」条件を削除すると、クエリはインデックス付きクエリで必要な方法で動作します。

私の質問は、where 句で使用されているインデックス付きの列があり、インデックス付きでない列の条件 (具体的には in 条件) を含めた場合、パフォーマンスが低下する可能性はありますか? クエリの説明計画は、非インデックス フェッチのヒントを提供しません。

また、条件の順序は重要ですか?つまり、非索引節の前に索引節を指定した場合、オラクルは非索引節を選択したサブセットにのみ適用しますか?

前もって感謝します。

4

1 に答える 1