优化发送查询效率
This commit is contained in:
@@ -6,22 +6,36 @@
|
||||
</Attributes>
|
||||
<DynSentence name="QryBatLst"> <!--查询该文件批次是否处理完成-->
|
||||
<Sentence>
|
||||
SELECT SND_TIME OSND_TIME, TXN_CNL,DSK_NAM ODSK_NAM,ORD_DT OORD_DT,CORG_MERC_ID OCORG_MERC_ID,CORG_NO OCORG_NO,CORG_DSK_NO OCORG_DSK_NO
|
||||
,AC_DT OAC_DT,SND_DT OSND_DT,SND_TM OSND_TM,BAT_STS OBAT_STS,BAT_ORN_AMT OBAT_ORN_AMT,BAT_ORN_CNT OBAT_ORN_CNT,
|
||||
BAT_TYP OBAT_TYP,CORG_FIL_NAM OCORG_FIL_NAM,SND_DT,SND_TM,MERC_ID OMERC_ID,TCORG_DSK_NO,'批量代发' RMK ,GET_TIME,CORG_JRN_NO
|
||||
FROM CAPBATINF
|
||||
where Corg_Dsk_No in (select Corg_Dsk_No from ( SELECT A.Corg_Dsk_No
|
||||
FROM CAPBATINF A,CAPDSKINF B,CAPCUSINF C
|
||||
WHERE (A.BAT_STS='1' OR A.BAT_STS='3')
|
||||
AND A.ORD_DT > ?
|
||||
AND A.CORG_NO =?
|
||||
AND A.PRO_JRL = '0'
|
||||
AND (SND_TIME<=?)
|
||||
AND (A.GET_TIME <=? OR A.GET_TIME IS NULL)
|
||||
AND A.DSK_NAM = B.DSK_NAM AND B.Customer_Id = C.Customer_Id
|
||||
order by rank desc,nvl(a.GET_TIME,0) asc,A.SND_TIME asc )
|
||||
where ROWNUM = '1' )
|
||||
FOR UPDATE skip locked
|
||||
SELECT SND_TIME OSND_TIME, TXN_CNL, DSK_NAM ODSK_NAM, ORD_DT OORD_DT, CORG_MERC_ID OCORG_MERC_ID, CORG_NO OCORG_NO, CORG_DSK_NO OCORG_DSK_NO,
|
||||
AC_DT OAC_DT, SND_DT, SND_TM, BAT_STS OBAT_STS, BAT_ORN_AMT OBAT_ORN_AMT, BAT_ORN_CNT OBAT_ORN_CNT, BAT_TYP OBAT_TYP,
|
||||
CORG_FIL_NAM OCORG_FIL_NAM, MERC_ID OMERC_ID, TCORG_DSK_NO, '批量代发' RMK, GET_TIME, CORG_JRN_NO
|
||||
FROM CAPBATINF A
|
||||
WHERE A.CORG_DSK_NO = (
|
||||
SELECT CORG_DSK_NO
|
||||
FROM (
|
||||
SELECT CORG_DSK_NO, RAND_VAL
|
||||
FROM (
|
||||
SELECT A.CORG_DSK_NO, C.rank, A.GET_TIME, A.SND_TIME, DBMS_RANDOM.VALUE AS RAND_VAL
|
||||
FROM CAPBATINF A
|
||||
INNER JOIN CAPDSKINF B ON A.DSK_NAM = B.DSK_NAM
|
||||
INNER JOIN CAPCUSINF C ON B.Customer_Id = C.Customer_Id
|
||||
WHERE A.BAT_STS IN ('1', '3')
|
||||
AND A.ORD_DT > ?
|
||||
AND A.CORG_NO = ?
|
||||
AND A.PRO_JRL = '0'
|
||||
AND A.SND_TIME <=?
|
||||
AND (A.GET_TIME <=? OR A.GET_TIME IS NULL)
|
||||
ORDER BY
|
||||
C.rank DESC,
|
||||
NVL(A.GET_TIME, 0) ASC,
|
||||
A.SND_TIME ASC
|
||||
) TOP_20
|
||||
WHERE ROWNUM <= 20
|
||||
ORDER BY RAND_VAL
|
||||
) RANDOM_ORDER
|
||||
WHERE ROWNUM = 1
|
||||
)
|
||||
FOR UPDATE SKIP LOCKED
|
||||
</Sentence>
|
||||
<Fields>TOD_DT|CORG_NO|C_SND_TIME|C_GET_TIME|</Fields>
|
||||
</DynSentence>
|
||||
|
||||
@@ -6,18 +6,35 @@
|
||||
</Attributes>
|
||||
<DynSentence name="QryBatInf">
|
||||
<Sentence>
|
||||
select * from CAPBATINF
|
||||
where Corg_Dsk_No in (select Corg_Dsk_No from ( SELECT A.Corg_Dsk_No
|
||||
FROM CAPBATINF A,CAPDSKINF B,CAPCUSINF C
|
||||
WHERE A.BAT_STS = '0'
|
||||
AND A.ORD_DT > ?
|
||||
AND A.PRO_JRL = '0'
|
||||
AND (A.SND_TIME<=? OR A.SND_TIME IS NULL)
|
||||
AND A.CORG_NO = ?
|
||||
AND A.DSK_NAM = B.DSK_NAM AND B.Customer_Id = C.Customer_Id
|
||||
order by rank desc,corg_dsk_no asc)
|
||||
where ROWNUM = '1' )
|
||||
FOR UPDATE skip locked
|
||||
SELECT *
|
||||
FROM CAPBATINF A
|
||||
WHERE A.CORG_DSK_NO = (
|
||||
SELECT CORG_DSK_NO
|
||||
FROM (
|
||||
SELECT CORG_DSK_NO, RAND_VAL
|
||||
FROM (
|
||||
SELECT
|
||||
A.CORG_DSK_NO,
|
||||
C.rank,
|
||||
DBMS_RANDOM.VALUE AS RAND_VAL
|
||||
FROM CAPBATINF A
|
||||
INNER JOIN CAPDSKINF B ON A.DSK_NAM = B.DSK_NAM
|
||||
INNER JOIN CAPCUSINF C ON B.Customer_Id = C.Customer_Id
|
||||
WHERE A.BAT_STS = '0'
|
||||
AND A.ORD_DT > ?
|
||||
AND A.PRO_JRL = '0'
|
||||
AND (A.SND_TIME <= ? OR A.SND_TIME IS NULL)
|
||||
AND A.CORG_NO = ?
|
||||
ORDER BY
|
||||
C.rank DESC,
|
||||
A.CORG_DSK_NO ASC
|
||||
) TOP_20
|
||||
WHERE ROWNUM <= 20
|
||||
ORDER BY RAND_VAL
|
||||
) RANDOM_ORDER
|
||||
WHERE ROWNUM = 1
|
||||
)
|
||||
FOR UPDATE SKIP LOCKED
|
||||
</Sentence>
|
||||
<Fields>TOD_DT|C_SND_TIME|CORG_NO|</Fields>
|
||||
</DynSentence>
|
||||
|
||||
Reference in New Issue
Block a user