많은 레코드가있는 테이블을 통해 반복하는 올바른 방법은 무엇입니까? 나는 지금까지 기록을 평가할 필요가있다. Entity Framework를 사용하여 MS SQL 데이터베이스에서 정보를 연결하고 가져옵니다. 간단한 foreach
루프를 사용하고있었습니다.Entity Framework foreach가 800,000 개가 넘는 레코드에
foreach (var x in MyEntity.MyTable)
{
//logic process
}
정확한 숫자가없는 500,000 개가 넘는 테이블에는 완벽하게 작동합니다. 문제는 응용 프로그램이 불안정 해지고 충돌 할 수있는 큰 테이블에 800,000 플러스 레코드가 기록되는 경우입니다. 나는 (4~6기가바이트 정도) RAM을 많이 사용하는 응용 프로그램을주의해야한다
페이징 구현. 메모리에있는 모든 레코드가 한 번에 필요하지는 않습니다. 또한 응용 프로그램이 단순히 "불안정 해지고 충돌"하지 않는 경우에도 예외가 발생합니다. 그 예외를 연구하려고 했습니까? – CodeCaster
프로세스 청크를 현명하게 처리하십시오. 또는이 작업을 SQL로만 만듭니다. –
한 번에 500KB 레코드를 처리 하시겠습니까? –