예약 된 배치 스크립트의 일부로 업데이트되는 준비 테이블이 있습니다.다른 테이블에 존재하지 않는 테이블에 대한 레코드를 얻으려면 어떻게합니까?
내가 Staging_Table의 항목으로 상정라는 Product_Table를 업데이트 매일 이제이 테이블
Staging_Table
를 호출 할 수 있습니다. 스테이징 테이블의 항목이없는 Products_Table의 행을 삭제해야합니다.이제 스테이징 테이블은 97000 개의 레코드를 보유하고 있지만 producst 테이블에는 7000 개 밖에 없습니다. 그러나 매일 매일 논리적 테이블의 항목은 97000까지 올라갑니다. TDC_IDP_ID라는 제품에 대한 키가 있습니다. .
그래서 나는이 영원히 실행하는 데 걸리는 것 같다 쿼리 ...
DELETE FROM Product_Table
WHERE PRODUCT_TD_PARTCODE NOT IN (SELECT TDC_TD_PARTCODE FROM Staging_Table WHERE TDC_IDP_ID = @TDC_IDP_ID)
이제 내부 쿼리가 97,000 레코드가 있습니다. 어떻게하면이 쿼리를 가장 잘 실행할 수 있습니까? 아니면이 문제를 해결할 다른 방법이 있습니까? 선택 대신 내가 다음 쿼리를 시도하고 내가이 질문을 입력으로 실행됩니다.
는SELECT COUNT(*)
FROM Product_Table PT
LEFT OUTER JOIN Staging_Table ST ON PT.PRODUCT_TD_PARTCODE = ST.TDC_TD_PARTCODE AND ST.TDC_IDP_ID = @TDC_IDP_ID
WHERE ST.TDC_TD_PARTCODE IS NULL
DELETE PT
FROM Product_Table PT
LEFT OUTER JOIN Staging_Table ST ON PT.PRODUCT_TD_PARTCODE = ST.TDC_TD_PARTCODE AND ST.TDC_IDP_ID = @TDC_IDP_ID
WHERE ST.TDC_TD_PARTCODE IS NULL
스테이징 테이블에 인덱스가 있습니까? – SMA