实际sql语句,其中a表中60000条数据,b表1000条,跟踪用时2秒,如何提高效率,望高手帮忙:
UPDATE FKOGD30 A 
SET 
A.CRE_DATA_STATUS = '3', 
A.FINAL_UPDATETIME = SYSDATE, 
A.EXCLUSIVEFG = ?, 
A.UPDATED_PERSON = ?, 
A.UPDATED_DT = SYSDATE 
WHERE EXISTS (SELECT 1 FROM 
    (SELECT DEBTOR_CODE, OFFICE_CODE, CREDITOR_CODE, CREDIT_CODE 
    FROM FKOGV3A01 
    WHERE ID = ? 
     AND DATA_DIV = '1' 
     AND DEBTOR_CODE = ? 
    GROUP BY DEBTOR_CODE, OFFICE_CODE, CREDITOR_CODE, CREDIT_CODE ) B 
WHERE A.FACTORING_CODE = ? 
AND A.DEBTOR_CODE = B.DEBTOR_CODE 
AND A.OFFICE_CODE = B.OFFICE_CODE 
AND A.CREDITOR_CODE = B.CREDITOR_CODE 
AND A.CREDIT_CODE = B.CREDIT_CODE 
)

解决方案 »

  1.   

    -- TRY THIS ONE:
    UPDATE FKOGD30 A
       SET A.CRE_DATA_STATUS  = '3',
           A.FINAL_UPDATETIME = SYSDATE,
           A.EXCLUSIVEFG      = ?,
           A.UPDATED_PERSON   = ?,
           A.UPDATED_DT       = SYSDATE
     WHERE EXISTS (SELECT 1
              FROM FKOGV3A01 B
             WHERE A.DEBTOR_CODE = B.DEBTOR_CODE
               AND A.OFFICE_CODE = B.OFFICE_CODE
               AND A.CREDITOR_CODE = B.CREDITOR_CODE
               AND A.CREDIT_CODE = B.CREDIT_CODE
               AND B.DATA_DIV = '1'
               AND B.DEBTOR_CODE = ?
               AND B.ID = ?
               AND A.FACTORING_CODE = ?);