세부 테이블에서 SQL Server 내 요약 테이블로 많은 양의 삽입 작업을 수행하고 있습니다. 나는이 방법은 상당한 양의 소요 것으로 나타났습니다이미 존재하는지 여부에 따라 INSERT를 수행하는 가장 효율적인 방법은 무엇입니까?
INSERT INTO TableA
(columnA
,columnB
,columnC)
SELECT
b.columnA,
b.columnB,
b.columnC
FROM TableB b
LEFT OUTER JOIN TableA a
on a.columnA = b.columnA
WHERE
a.columnA IS NULL
: 저는 현재 아래의 예처럼 삽입하기 전에 LEFT OUTER는 세부 테이블에서 행이 이미 요약 테이블에 존재하는지 확인하는 조인 사용하고 있습니다 이미 존재하는 것을 판별하기 위해 모든 행을 비교해야하기 때.에 삽입 할 행이없는 경우에도 시간이 필요합니다. 이 시나리오에서는 일반적으로 어떤 행이 삽입되었는지를 알려주기 위해 플래그를 TableB
에 추가하는 것을 고려합니다.
그러나 여러 플래그를 필요로하고 TableB
가 매우 크고 대형화와 같이 내가 저장 공간을 사용하지 선호 TableA
에 삽입 할 TableB
의 행에 대한 여러 가지 시나리오가 있습니다.
어떤 조언을 주셔서 감사합니다.
대신 병합 문을 사용하려고 했습니까? 나는 SQL Server가이를 사용할 때 몇 가지 추가 최적화를 수행한다고 생각한다. – mfussenegger
또한 이러한 테이블에 PK와 인덱스를 표시 할 수 있습니까? –