2012-03-08 3 views
0

SQL Server Compact Edition 파일에 항목을 저장하는 wpf 응용 프로그램이 있습니다. 이 파일은 데이터 컨텍스트를 구성하는 클래스 목록에서 동적으로 생성됩니다. 다음과 같은 시나리오가 발생하면로드 시간이 느려집니다. 내 응용 프로그램에이를 얻으려면 내가로드 내 데이터 컨텍스트에서 표 1, 표에 표 2 및 표 2SQL Compact Edition 읽기 속도가 증가합니다.

에서 링크 표

이 링크를

ItemB

의 목록을 포함 ItemA의 목록을로드하려고

SQL Server의 모든 Table1 행 각 Table1 행이 반환 된 경우 새 항목에 정보를 추가합니다. 그런 다음 링크 테이블을 통해 현재 Table1 행에 링크 된 Table2 행을 찾습니다. 반환 된 모든 Table2 행에 대해 ItemB의 목록으로 변환하여 ItemA에 추가합니다.

결국 ItemB 목록을 포함하는 ItemA 목록으로 끝납니다. 문제는 내가 DB를 여러 번 호출하고 있는데 이것은 수백 개의 항목을 가져올 때로드 시간을 늘리는 것입니다. 여러 번 호출하지 않고도이 작업을 수행하는 더 좋은 방법이 있습니까? 앱 속도를 향상시키는 가장 좋은 방법은 무엇입니까? 나는 ItemA를 캐싱해야 하는가? 그렇다면 가장 좋은 방법은 무엇인가?

+0

지금까지 답변을 기반으로 한 사실과 내가 앱 (1 분로드 시간에서 밀리 초까지)을 처리하는 유일한 방법은 모든 내 객체를 디스크에 직렬화하고로드시 메모리로 다시 가져 오는 것입니다. SQL 서버 CE를 완전히 버리는 것을 생각합니다. 나는 결국이 응용 프로그램을 Windows 8 Metro로 포팅하고 싶습니다. SQL CORE를 지원하지 않기 때문에 더 많은 이유가 있습니다. - 누군가 직렬화 된 파일의 크기가 커지기 전에 자랄 수 없거나 다른 이유로 나쁘다고 생각하는 사람이 있습니까? – Oli

답변

0

답변이 많지는 않지만 위의 시나리오에서 SQL Server가 충분히 빠르지 않다고 생각합니다. 따라서 내 백업 저장소를 위의 내 의견에 따라 파일에 직렬화 된 메모리 목록으로 변경했습니다. 테스트 개월 후에 나는 어떤 문제도 경험하지 못했고 응용 프로그램의 속도가 크게 향상되었습니다.

관련 문제