2009-10-27 5 views
0

수천 개의 행을 저장하고 무언가를 수행 한 후이를 업데이트하는 가장 좋은 방법은 무엇입니까? 일 MyDataTable에 일부 변경을 수행 한 후DataTable 업데이트 문제

MyDataAdapter.Update(MyDataTable) 

의해 삽입시

는 현재, I는 그것을 채우고, 데이터 테이블을 사용하여, 다시 MyDataAdapter.Update (MyDataTable) 방법을 사용한다.

편집 :

내가 더 많은 정보를 제공하지 않는 죄송합니다.

XML 파일에서 최대 200.000 개의 행을 만들 수 있습니다. 행이 데이터베이스에 저장됩니다. 이후에는 각 행에 대해 몇 가지 프로세스가 있습니다. 그리고 데이터베이스의 각 행을 업데이트해야합니다.

행 단위로 업데이트하는 대신 데이터 테이블을 업데이트하고 동일한 데이터 어댑터를 사용하여 행을 업데이트하기로 결정했습니다.

이것은 나에게 최고입니다.

나는 더 똑똑한 접근법이있을 것이라고 생각합니다.

+0

이 문제와 직접적인 관련이 없습니다. 특정 문제가 있습니까? –

답변

1

: 행에 의해

DataAdapter.Update() Udate (및 삽입/삭제)합니다 행. 개인적인 변화가 있다면 더 빠른 방법은 없습니다. 체계적으로 변경 한 경우 SET Price = Price+ 2 WHERE SelByDate < '1/1/2010'과 같이 데이터베이스에 대해 DbCommand을 실행하는 것이 좋습니다.

하지만 성능면에서는 트랜잭션 및 오류 처리에 대해 걱정해야합니다.

+0

@Henk Holterman : 그러나 나는 성능을 향상시키는 DataAdapter.UpdateBatchSize를 사용하고 있습니다. – JCasso

+0

OK, 1보다 큰 값을 설정하면 오버 헤드가 적은 로우 배치가 업데이트됩니다. 나는 그것이 내 대답의 핵심을 변화시키지 않는다고 생각한다. –

+0

@Henk Holterman, 실제로 대량 업데이트가 없습니다. 웹 서비스에 각 행의 일부 열을 보내고 서버가 각 요청에 대해 고유 한 값을 보낸 다음 업데이트합니다. 어쨌든이 일을하는 더 좋은 방법이없는 것처럼 보입니다. – JCasso

1

올바르게 이해하면 데이터베이스에 행을로드 한 다음 해당 행을 업데이트하는 두 가지 별도의 작업을 수행하고 있습니다.

삽입 할 행이 다른 ADO.NET에서 지원하는 데이터 원본에서 가져온 경우 SqlBulkCopy를 사용하여 행을 일괄 적으로 삽입 할 수 있습니다.이 경우 행을 데이터 테이블을 사용하는 것보다 효율적으로 삽입 할 수 있습니다.

일단 행이 데이터베이스에 있으면 SQLCommand를 실행하여 값을 수정하는 것이 더 나을 것이라고 생각합니다.

우리가 무엇을 - 왜 - 왜 묻는 지에 대한 자세한 내용을 제공 할 수 있다면 그 답을 더 잘 맞출 수 있습니다. 귀하의 의견에 반응에서

+0

사실 문제는 그것을 업데이트하고 있습니다. 나는 그것을 제외하고 ok이다. 하지만 하나씩 업데이트하고 싶지는 않습니다. 삽입 된 모든 행을 업데이트해야합니다. 그리고 업데이트하기 전에 저장해야합니다. – JCasso