구문 분석 중이며 데이터를 추출하려고하는 xml이 있습니다. 입력 XML 파일을 구문 분석 한 결과 데이터 세트에 (2) 테이블이 있다고 가정 해 보겠습니다..NET DataSet 쿼리 효율성
표 1은 IP 주소와 기본 키를 포함합니다. 표 # 2에는 포트 번호와 일치하는 기본 키가 들어 있습니다.
두 테이블을 모두 살펴보고 IP 주소와 포트가 일치하는 개체를 생성하려고합니다. 기본적으로 동일한 기본 키를 공유하는 두 테이블의 데이터를 병합합니다.
지금 저는 foreach 루프를 다른 foreach 루프 내에 중첩 시켰습니다. 바깥 쪽은 각 IP 주소를 통과하고 내부 IP 주소는 각 포트를 통과하고 동일한 기본 키와 일치합니다.
결과는 작동하지만 O (n^2)입니다. 이 작업을 수행하는 더 빠른 방법이 있습니까?
BTW, 난 당신이 적절한 열을 각 DataTable
의 PrimaryKey
속성을 설정했는지 확인
이 "사전"을 처음 생성하는 프로세스가 적어도 O (n) 시간이 아니겠습니까? 사전을 사용하려면 추가 시간이 필요합니다. 어떻게 전체 프로세스에 대한 O (n)입니까? – Nick
두 경우 모두 인덱스를 작성하려면 루프를 수행해야합니다. 'DataTable'의 경우 루프는 코드 대신 System.Data 어셈블리에 있으므로 표시되지 않습니다. 또한 big-O 표기법은 계수를 무시합니다. O (n) == O (2 * n) - 대략적으로 두 개의 반복은 계수 2에서 곱하는 것을 의미합니다. http://en.wikipedia.org/wiki/ Big_O_notation –