シンプルなSQLクエリを最適化するのに問題がありますが、タイミングに重大な問題があります。私はそれを3回書いたが、どれも働いていない。最後にINNER JOINクエリ
SELECT RSKADDR.*
FROM EDW_BASE.RCI_RISK_ADDRESS RSKADDR
INNER JOIN (
SELECT DISTINCT COVER_RISK_ID
FROM EDW_BASE.RCI_COVER_RISK_MASTER RSKMASTER
INNER JOIN
(SELECT DISTINCT CONTACT_ID, FOLLOW_UP_DATE
FROM EDW_STG.STG_CIM_SVOM03
WHERE OUTSTANDING = 1 AND QUEUE = 'CIM Update for Contact Address') ADDR_WF
ON RSKMASTER.CONTACT_CODE = ADDR_WF.CONTACT_ID
WHERE RSKMASTER.IS_STORNO != 1
AND RSKMASTER.PRODUCT_CODE = 'HOME'
AND ADDR_WF.FOLLOW_UP_DATE >= RSKMASTER.COVER_EFF_START_DATE
AND RSKMASTER.POLICY_STATUS_CODE = 'POLICY'
AND ADDR_WF.FOLLOW_UP_DATE <= RSKMASTER.COVER_EFF_END_DATE
) ACTVRSK
ON ACTVRSK.COVER_RISK_ID = RSKADDR.RISK_ID
第一内のコードが参加した作品速いすべての方法:ここで私が動作するように期待していたオリジナルのものです。つまり、2番目のSELECTクエリ(最初とメインのSELECTクエリのINNER JOINクエリ内)は問題なく高速に動作します。問題は、メインのSELECTクエリのINNER JOIN内に2番目のSELECTクエリを統合するときに発生します(RSKADDR。*を選択します)。
実行が終了しないようです。
私は他の方法と同じ結果を試みた:
SELECT RSKADDR.*
FROM EDW_BASE.RCI_RISK_ADDRESS RSKADDR
INNER JOIN EDW_BASE.RCI_COVER_RISK_MASTER RSKMASTER
ON RSKMASTER.COVER_RISK_ID = RSKADDR.RISK_ID
AND RSKMASTER.IS_STORNO != 1
AND RSKMASTER.PRODUCT_CODE = 'HOME'
AND RSKMASTER.POLICY_STATUS_CODE = 'POLICY'
INNER JOIN EDW_STG.STG_CIM_SVOM03 ADDR_WF
ON OUTSTANDING = 1 AND QUEUE = 'CIM Update for Contact Address'
AND RSKMASTER.CONTACT_CODE = ADDR_WF.CONTACT_ID
AND ADDR_WF.FOLLOW_UP_DATE >= RSKMASTER.COVER_EFF_START_DATE
AND ADDR_WF.FOLLOW_UP_DATE <= RSKMASTER.COVER_EFF_END_DATE
それは不合理です。そのような簡単なクエリで、それを動作させることはできません。どんな助けでも大歓迎です。
あなたのスキーマとデータを共有することができます –
こんにちは、お返事ありがとうございます。残念ながら、個人情報が含まれるため、データを共有することはできません。あなたはそのスキームについて何を知りたいですか?スキーマ全体を共有することなく説明することができますか? – Ankhnesmerira
サンプルデータとスキーマを正確には共有できません –