SQL SERVER에 분할 된 테이블이 있고 ID에 클러스터형 인덱스가 있고 테이블이 period_key로 분할되어 있습니다. ID는 파티션 내부에서 고유하지만 고유 한 교차 파티션은 아닙니다. 필요한 모든 고유 ID를 찾는 것입니다. 가장 간단한 방법은C에서 DB에서 여러 정렬 된 데이터 집합을 정렬하는 방법 #?
select unique ID from tab
를 사용하지만, 디스크 IO의 많은이 필요하므로 이러한 요구는 임시 디스크를 많이 종료해야 할 데이터베이스의 DB를 정렬 할 수 있습니다. 시스템은 이미 IO 경계에 있기 때문에 디스크 IO를 줄이려고 생각하고 있습니다. 클러스터 인덱스를 사용하여 각 파티션을 순서대로 읽을 수 있기 때문에 10 개의 파티션이 있다고 가정하고 각 파티션에서 하나의 행을 읽고 비교 한 다음 최소 ID, 예를 들어 파티션 X에서 레코드를 출력 한 다음 읽을 수 있습니다 파티션 X의 다음 행. 그리고이 10 개의 행을 다시 비교하여 최소 ID로 레코드를 출력합니다. 외부 정렬과 동일합니다.
C#에서는 경험이 없지만 java는 알고 있습니다. 아무도 내게 C#에서 그것을 구현하는 방법을 약간의 아이디어를 줄 수 있습니까?
여기서 C#의 역할은 무엇입니까? linq-to-sql 솔루션을 원하십니까? SQL Server 자체에서 최적화 된 하나의 쿼리보다 데이터베이스에 대한 다중 왕복 이동을 만드는 솔루션이 더 낫다고 나는 거의 상상할 수 없습니다. 아니면 당신의 요점을 놓치고 있습니까? –
중복 ('탭에서 고유 ID 선택')을 제거 하시겠습니까? 아니면 한 번만 발생하는 ID를 가져 오시겠습니까? –