2010-01-12 1 views
1

asp.net 프로그램에 문제가 있습니다. 매우 큰 데이터베이스에서 like 조건을 사용하여 Datatable.Compute을 수행하고 있습니다. 결과는 4 분 정도의 시간이 걸리거나 요청 시간 초과가 발생합니다. a =와 수정 텍스트를 사용하여 동일한 요청을하면, 표시하는 데 약 1 분이 걸리고, 제 사용에는 적합합니다.Datatable.compute은 (는) 같은 조건으로 천천히 진행합니다.

float test = (int)Datatbl.Tables["test"].Compute("COUNT(pn)", "pn like '9800%' and mois=" + i + " and annee=" + j); 

내가 이일을위한 솔루션을 찾고있다 : 여기

너무 느린 라인이다.

도와주세요.

답변

1

찾았습니다.

나는 Dataview를 사용하여 결과를 DataTable로 보냅니다. 이 프로세스를 가속화 10 배 여기

는 exemple입니다 :

DataView dv = new DataView(Datatbl.Tables["test"], filter, "pn", DataViewRowState.CurrentRows); 
DataTable test = dv.ToTable(); 

다음은 "테스트"DataTable을 사용할 수 있습니다.

+0

어떻게 만드는지, 설명해주십시오. – Danilo

1

데이터베이스에서 Datatable의 데이터를 검색하고 있습니까? 데이터베이스에 액세스 할 수 있습니까?

그렇다면 한 가지 옵션은이 조회 및 집계를 C# 코드에서 수행하는 대신 데이터베이스로 이동하는 방법을 연구하는 것입니다. 데이터베이스에 일단 필요하면 'mois'및 'annee'열에 대한 색인을 추가하여 검색 속도를 상당히 높일 수 있습니다. '9800'이 하드 코딩 된 값이면 'pn'열이 '9800'으로 시작하는지 여부를 나타내는 부울 열로 구성된 비정규 화를 추가하고이 열에 인덱스를 넣을 수도 있습니다. 이렇게하면 조회가 실제로 매우 빠르게 수행 될 수 있습니다.

사용할 수있는 옵션이 많이 있습니다.