ORACLE sql パフォーマンスチューニング。 一つのテーブルに二つの日付型の項目があり、それらをJoinするために効果的なIndexを作成したいです


Oracle SQL のパフォーマンスチューニングに関する質問です。  
現在、一つのTableがあり、そのTableに 二つの日付型（TIMESTAMP(6) with local timezobe) の項目があります。

私がSQLを書くときに、それら二つの日付が合致している必要があるため、例えば下記のように書きます。

[code]

    select * from table1 where date1 = date2;
    
[/code]

すると、Query Planが必ずFull Table Accessになってしまい、SQLのコストが上がります。  
インデックスを下記のようにつけてみたのですが、Table full scan の状況に変化はないです。

[code]

    CREATE INDEX table1_IDX on table1 (date1 ASC, date2 ASC)
    
[/code]

どのようにすれば、このような状況でTable Full Scan を防げるでしょう？




質問文中のクエリは左辺、右辺ともレコードを参照しないと値がわからないので、フルスキャンになるのは妥当かと思います。

[仮想列](https://docs.oracle.com/cd/F19136_01/sqlrf/ALTER-
TABLE.html#GUID-552E7373-BF93-477D-9DA3-B2C9386F2877__GUID-58889759-6A94-4458-A80D-D870424E4AEE)で`date1`と`date2`が同値かどうかを判断できるようにして、この仮想列にindexを張ればインデクスを用いたスキャンにはなると思います。

[code]

    alter table table1 add (
      same_date number(1)
      generated always as
      (
        case
          when date1 = date2 then 1
          else 0
        end
      ) virtual
    );
    
    create bitmap index idx_same_date on table1(same_date);
    
    select * from table1 where same_date = 1;
    
[/code]

(ただ、タイトルにある"Join"がこのクエリとどう関わるのかは、質問からは読み取れませんでした)

