800 万行のテーブルを常にクエリする必要があるため、ジョブのインデックスを作成することにしました。
クエリでは、where 条件で 3 つの列を使用します。
SELECT something
FROM my_table
WHERE TRUNC(DATE) = TRUNC(SYSDATE)
AND IS_GREETED = 1
AND EMP_ID = 'JOHN.SMITH'
そのため、EMP_ID のみを使用してインデックス 1 を作成し、これら 3 つのフィールド (DATE、IS_GREETED、EMP_ID) すべてを使用してインデックス 2 を作成しました。
SQL Developer の autotrace 機能により、Oracle が実際にはインデックス 2 ではなくインデックス 1 を使用していることがわかりました。
これの理由は何ですか?パフォーマンスを向上させる他の方法はありますか? ありがとう。