t1, t2, t3
Oracleコンテキストに3つのテーブルがあります。次の構造を持つそれらを呼び出しましょう:
t1 : t1_ID, t1_name, ...
t2 : t1_ID, t3_name, ...
t3 : t3_name, randomCol1, randomCol2, randomCol3, ...
私が欲しいのは、次のような結果が得られるクエリです。
t0_name | ランダム列
だから私はこのクエリを作成しました:
SELECT t1.t1_name, t3.randomCol1 AS randomCol
FROM t1
JOIN t2 ON t1.t1_ID=t2.t1_ID
JOIN t3 ON t2.t3_name=t3.t3_name
WHERE t3.randomCol1 LIKE '_%'
UNION
SELECT t1.t1_name, t3.randomCol2 AS randomCol
FROM t1
JOIN t2 ON t1.t1_ID=t2.t1_ID
JOIN t3 ON t2.t3_name=t3.t3_name
WHERE t3.randomCol2 LIKE '_%'
UNION
SELECT t1.t1_name, t3.randomCol3 AS randomCol
FROM t1
JOIN t2 ON t1.t1_ID=t2.t1_ID
JOIN t3 ON t2.t3_name=t3.t3_name
WHERE t3.randomCol3 LIKE '_%'
_
単一の列で始まる randomCols のすべての値が必要だったので、それらにリンクされた t1_name とペアになっています。より多くの情報を提供するために、randomCol1 と randomCol2 はほぼ同じです (どちらも同時に null ではなく、ほぼ同じ値を持ちます)、randomCol3 は通常 null です。
これはパフォーマンスの面でひどいことを知っているので、改善しようとしました。
したがって、このソリューションを最適化するさまざまな方法 (UNION ALL などを使用するなど) を Web で検索しましたが、必要な正確な結果は得られませんでした。
私の質問は次のとおり です。このクエリを最適化する方法を教えてください。
よろしく