0

SCQL CE 4.0 데이터베이스가있는 응용 프로그램을 개발 중이며 EF 4.3.1을 ORM으로 사용했습니다. XML 파일에서 100 개의 레코드를로드해야하며 (GUID 열을 기준으로) 데이터베이스에 대해 확인해야합니다. 새 레코드 인 경우 레코드를 삽입해야하지만 일부 레코드가 이미있는 경우 해당 레코드를 업데이트해야합니다.100 개의 레코드 업데이트 성능 고려 사항

이제이 요구 사항에 가장 적합한 방법이 궁금합니다.

현재 다음 코드를 사용하고 있지만 효율적이라고 생각하지 않습니다.

foreach(var record in xmlRecords) 
{ 
    var existingRecord = context.Records.SingleOrDefault(r => r.Guid == record.Guid); 
    if(existingRecord == null) 
     context.Records.Add(record); 
    else 
     context.Records.ApplyCurrentValues(record); 
} 

context.SaveChanges();     
+0

이 프레임 워크에 대해서는 잘 모르겠지만 SQL이나 외부 데이터베이스를 다룰 때 유일한 조언은 자신의 함수를 사용하는 것입니다. C 또는 C++ 또는 다른 언어로 비즈니스 로직을 형성하지 말아야합니다. SQL 문서에서 적절한 함수를 검색하고 해당 함수 만 사용하여 작업을 수행하게하십시오. – user1824407

+0

전적으로 user1824407에 동의하지 않습니다 ... 귀하의 비즈니스 로직을 데이터 레이어가 아닌 애플리케이션에 유지하는 것이 옳은 결정이라고 생각합니다. –

답변

0

이 다른, 괜찮 프로 시저가 XML을 사용하여 입력으로 XML을 복용 한 후 삽입 및 업데이트 명령을 쓰기 저장하는 것입니다하지만 SQL CE 지금은 '에 대한 XML 데이터 유형을

0

을 지원하지 않습니다 m 다음 코드를 사용하지만 효율적이라고 생각하지 않습니다.

당신의 작품처럼 들리 네요. 100 개의 레코드를 처리하여 테스트를 해 보셨습니까? 더 많은 것을 최적화하고 싶은 이유가 있습니까? 코드에서 합리적으로 100 개의 레코드를 처리 할 수 ​​있다면 (이 경우 2 ~ 2 초 미만이라고 합리적으로 생각할 것입니다.) 귀하의 요구 사항을 충족하면 완료됩니다. 엔티티 프레임 워크, 나는 다른 모든 ORM이 쉽게 100 행을 업데이트 할 수 있다고 상상합니다. 앞으로 더 많은 레코드를 처리 할 필요가 있다고 걱정한다면 적절한 수의 레코드로 큰 테스트 파일을 만들고 어떻게 수행하는지 확인하십시오. 거기서부터 최적화하십시오.

개미가 부러지지 않으면 수정하지 마세요. 코드가로드를 처리 할 수 ​​없을 때까지는 최적화하지 마십시오. 사용자는 1.1 초에서 1.1222 초 사이의 차이를 알 수 없습니다.

무언가를 최적화해야한다면, 실행 속도가 느려지는 것에 대한 가정을 던질 것입니다. 그것은 거의 결코 당신이 기대하는 것이 아닙니다. 코드에 타이머 문을 던져서 느려지는 것을 확인하십시오.

희망이 있습니다.

+0

고객 만족에 관한 것이 아니라 더 나은 프로그래밍을 위해서입니다. – mrtaikandi

+0

코드가 제게 깨끗해 보입니다. 더 나은 프로그래밍은 작동하는지 (즉, 사용자 요구 사항을 충족시키는 지), 유지 관리 할 수 ​​있습니다. 최적화를 수행하면 코드가 더 복잡해지며 유지 관리가 어려워집니다. 이유가 없으면하지 마십시오. 코드가 이해하기 어려웠거나 느리게 실행되는 경우 리팩토링/최적화라고 말합니다. 그렇지 않으면 나는 그것을 놓고 갈 것입니다. 또한이 최적화가 미치는 영향이 큰 다른 작업에 시간을 할애 할 수 있습니다. 행운을 빕니다 –