ID で結合された 4 つのテーブルからデータを取得する Oracle 11 SQL クエリがあります。最初に結合された 3 つのテーブルには、それぞれ「Y」である必要がある ACTIVE_IND 値と発効日 (EFF_DATE) があり、それぞれの最大発効日のレコードが必要です。
ここで機能するクエリがありますが、少し遅いように見えるので、より最適/効果的/効率的な書き方があるかどうか知りたいです。私が現在使用しているものは次のようになります。
SELECT DISTINCT A.TABLE1_ID,
A.TABLE1_COL1,
B.TABLE2_COL2,
C.TABLE3_COL3,
D.TABLE4_COL4
FROM TABLE1 A,
TABLE2 B,
TABLE3 C,
TABLE4 D
WHERE B.TABLE2_ID = A.TABLE1_ID
AND B.TABLE2_ACTIVE_IND = 'Y'
AND B.TABLE2_EFF_DATE =
(SELECT MAX (B2.TABLE2_EFF_DATE)
FROM TABLE2 B2
WHERE B2.TABLE2_ID = B.TABLE2_ID
AND B2.TABLE2_ACTIVE_IND = 'Y')
AND C.TABLE3_ID = A.TABLE1_ID
AND C.TABLE3_ACTIVE_IND = 'Y'
AND C.TABLE3_EFF_DATE =
(SELECT MAX (C2.TABLE3_EFF_DATE)
FROM TABLE3 C2
WHERE C2.TABLE3_ID = C.TABLE3_ID
AND C2.TABLE3_ACTIVE_IND = 'Y')
AND D.TABLE4_ID = A.TABLE1_ID
AND D.TABLE4_ACTIVE_IND = 'Y'
AND D.TABLE4_EFF_DATE =
(SELECT MAX (D2.TABLE4_EFF_DATE)
FROM TABLE4 D2
WHERE D2.TABLE4_ID = D.TABLE4_ID
AND D2.TABLE4_ACTIVE_IND = 'Y')
ORDER BY A.TABLE1_ID;