2014-12-04 5 views
-1

테이블에 약 10,000 개의 레코드가 있습니다. 내 코드 메모리에있는 모든 레코드를 가져 와서 처리를 수행하고 처리가 성공했는지 여부를 결정합니다. 따라서 레코드 각각에 대해 BIT 유형의 열을 0 또는 1로 업데이트해야합니다.하나의 DB 호출로 여러 레코드 업데이트

각 항목을 처리 한 후에는 데이터베이스를 때리면 모든 비트 값을 전달하고 싶지 않습니다. 업데이트를 위해 한 번에 기록하십시오.

그렇게하는 방법이나 충분히 효율적으로 다른 방법이 있습니까?

+0

이유 투표 이유? – Saksham

+0

메모리에서 모든 처리를 수행 할 때 데이터 파일 대신 DB를 사용하는 이유는 무엇입니까? 또는 DB의 단일 바이너리 레코드/셀. – i486

+0

@ i486 db의 데이터가 다른 플랫폼의 다른 응용 프로그램에서 입력 되었기 때문에 – Saksham

답변

1

SqlBulkCopy 클래스를 사용해보세요.

많은 수의 행을 데이터베이스의 테이블에 효율적으로 삽입 할 수 있습니다 (예 : 임시 테이블). 당신의 목적을 위해, 테이블은 비트 값과 함께 각 행을 식별하기 위해 사용하는 키를 가지고 있어야합니다.

그런 다음 UPDATE 명령을 실행하여 해당 테이블을 원본 데이터와 병합 할 수 있습니다.

이 방법을 사용하면 모든 데이터를 한 번의 작업 (또는 적어도 소수의 작업 ... 심지어 SqlBulkCopy을 사용하여 큰 업데이트를 일괄 처리로 나누는 것이 유리할 수 있음)에서 서버로 전달한 다음 SQL Server는 비트 값을 원래 테이블로 다시 복사하는 작업을 수행합니다.

+0

정말 좋은 소리. 이것을 구현하고 업데이트하겠습니다. – Saksham

관련 문제