연락처 목록이 포함 된 Firebird 데이터베이스와 각 연락처의 서비스 및 송장 목록이 있습니다.C# DataAdapter.Fill 성능 향상
고객 테이블의 크기 순서는 10k이며 인보이스/서비스는 연락처 크기의 약 5 배입니다. 테이블에 열이 많이 포함되어 있습니다 (최대 150 개). 나는 이것이 이상적이지 않다는 것을 안다. 불행히도, 그대로 부과 된대로 데이터베이스를 재 설계 할 수는 없다. 사실 그하여
DataTable dataTable = new DataTable();
dataTable.BeginLoadData();
FbDataAdapter fda = new FbDataAdapter(command);
fda.Fill(dataTable);
dataTable.EndLoadData();
나는 매우 실망 : 이제
, 나는 (사실, 거의 40-50%) 다음 코드를 사용하여 데이터의 순수한 페치에서 보낸 시간의 상당 부분을 Fill
전화를 걸면 30k 행을 가져 오는 데 약 20 초가 걸립니다. 이 부분을 향상시킬 수있는 희망이 있습니까? 이것을 개선하기위한 대안 (상업적 일 수 있음)은 무엇입니까?
왜 30,000 개의 행을로드하고 있습니까? 보고서 작성 중입니까? –
모든 것을 한 번에로드해야합니까? 그렇지 않다면 가장 쉬운 해결책은 일종의 페이징을 구현하는 것입니다 (읽기 : 한 번에 적은 수의 레코드를로드 한 후 다음 비트로 이동). – stybl
일종의 - 예. 데이터 집합에서 유연하고 무거운 검색이 필요하기 때문에 버퍼 방식을 사용합니다. 메모리 기반 검색은이 경우 서버 측보다 훨씬 빠릅니다. – neggenbe