0

以下は、実行しようとしているクエリであり、実行に時間がかかります。

SELECT DISTINCT (CLN_CLNDR_DT)FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,CTD_CSH_TRNSCTN_DTLS CTD WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID AND CLN_DT_SEQ_NUM  
IN 
 (SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
 SYG_SYSTEM_GLOBALS SYG,
 CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
AND CLN1.CLN_BP_ID     = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID
);

でクエリだけを実行しようとすると、結果が (522,470,419,417,553,582,305,361) として簡単に返されます

SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
 SYG_SYSTEM_GLOBALS SYG,
 CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
AND CLN1.CLN_BP_ID     = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID;

また、ブロック内のクエリを内部クエリの結果 (522,470,419,417,553,582,305,361) に置き換えて、完全なクエリを直接実行しようとすると、

正常に動作しています。

私はこれに慣れていないので、何が起こっているのかわかりません。これで私を助けてください。

4

1 に答える 1

0

外側のクエリで行をフィルター処理するために既にそれらを使用しているため、サブクエリのすべてのテーブルが必要だとは思いません。これを試して:

SELECT DISTINCT (CLN_CLNDR_DT)
FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,
CTD_CSH_TRNSCTN_DTLS CTD 
WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID 
AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID 
AND CLN_DT_SEQ_NUM  
IN 
 (SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM) 
 FROM CLN_CLNDR CLN1,
 SBD_SYS_BSNS_DTS SBD,
WHERE SBD.SBD_BSNS_DT  = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID         = SBD.OU_ID
);
于 2014-08-14T16:11:29.777 に答える