나는 임시 테이블에 엑셀 레코드의 대량을 업로드합니다. 그런 다음이 행을 합하여 PK로 주 테이블에 합산해야합니다.어느 것이 더 빠릅니까? 방아쇠를 삽입하거나 직접 저장 프로 시저
삽입 후 삽입 된 것이 메인 테이블에 이미 존재하는지 확인하는 트리거를 만들었습니다 (기존에 삽입하지 않으면 기존 행의 모든 열이 업데이트 됨).
그래서 나는 다음 트리거가 기본 테이블에/업데이 트를 삽입 할 또 다른 임시 테이블INSERT INTO TEMPTBL (select SUM(...)...* from temptable)
에 삽입하기 위해 필요한이 트리거를 트리거합니다.
이것이 적절한 방법인지, 아니면 단지 하나의 TEMP 테이블을 사용하는지 궁금 해서요. 그런 다음 SP를 사용하여 1 개의 커서 추출 (기존 행을 업데이트하는 경우)을 수행 한 다음 나머지 부분을 삽입하십시오.
미리 읽어 주셔서 감사합니다. 이들이 다중 사용자를 처리 할 것이기 때문에 어느 것이 이상적 일지/더 빨리 알 필요가 있습니다. (교착 상태는 아직 마음에 들지 않습니다.)
내 INSERT 파트에 대해 SP에서 수행 한 작업입니다. 문제는 업데이트가 될 것입니다. 기존 행의 일부 열을 업데이트해야합니다. – Sid
나는 내가 DELETE * FROM WHERE 행을 사용하고 있다고 생각한다. 그런 다음 나머지 부분에 삽입하십시오. 그게 괜찮을까요? 또한 사용자가 수천 개의 행을 업로드 할 수 있기 때문에 어떻게 로그를 최소화 할 수 있습니까? 나는 TRUNCATE TABLE을 사용할 것이지만, 최근에 업로드 된 다른 사용자의 데이터를 즉시 자르지 않을까 걱정됩니다. : D – Sid
@sid 처음에는 수천 개의 행이 많은 것처럼 보였지만 SQL Server는 수백만 개를 처리 할 수 있도록 만들어졌습니다. 깨끗한 세트 기반 방식을 취하는 한 성능에 대해 너무 걱정할 필요가 없다고 생각합니다. 이를 염두에두고 업데이트 문은 삭제/삽입보다 적은 로그 항목을 생성합니다. 나는 당신이 모든 것을자를 필요가 있다고 생각하지 않는다. 당신의 임시 테이블은 연결마다 있어야하고, 당신이 끝나면 자동으로 정리 될 것이다. 봐. –