関連するすべてのフィールドを見ると、各テーブルのカバーインデックスにはmay列が含まれます
t1: Y, F, H, A
t2: X, G, C, D, E
t2.X、t2.Gまたはt1.Y、t1.F、t1.Hのいずれかの基準はどの程度選択的ですか?
個々の列のいずれも十分に選択的でない場合(理想的には0.5%以下)、たとえば、複数の列を含む1つまたは複数のカバーインデックスを作成することができます。
t2 (G, X)
t1 (H, F, Y)
注: インデックス内の列の順序は非常に重要です。常に最も選択的なもの(列データを最も明確なセットに分割するもの)を最初に配置します。
ストレージを犠牲にして、インデックス自体に必要なすべての列を提供することにより、インデックスをクエリでカバーすることができます。これは、クエリがテーブルデータに戻る必要がまったくないことを意味します。
create index ix_t2 on t2 (G,X) INCLUDE (C,D,E)
create index ix_t1 on t1 (H,F,Y) INCLUDE (A)
編集
そこにSQLServerDDLを挿入したようです。 Oracleでは、インデックスを拡張してt2(G、X、C、D、E)にする必要がありますが、インデックスキーが非常に長くなるため、インデックス使用の選択性要件が高くなります。