저는 현재 이전 데이터베이스를 새로운 스타일로 변환하는 프로그램에서 작업하고 있습니다. 할당 된 작업 중 하나는 오래된 바이너리 열을 제거하고이를 리포지토리의 문서로 변환하는 것입니다..NET - 쿼리가 완료되기 전에 DataReader에서 읽기 시작 하시겠습니까?
테이블에 약 110 만 개의 행이 있으며 완료하려면 약 12 시간이 걸립니다.
저는이 모든 것이 조금 더 빨라질 수있는 방법을 찾고 있습니다. 제가보고있는 한 가지 방법은 데이터를 더 빨리 얻는 것입니다. 완료되기 전에 쿼리 결과에 접근 할 수있는 방법이 있다면? 쿼리 분석기에서이 테이블에 대해 "select *"문을 실행하면 즉시 결과가 반환되기 시작하지만 .NET에서 ExecuteReader를 사용하면 해당 쿼리가 약 30 분 정도 걸려서 행 읽기를 시작할 수있는 것으로 나타났습니다. .
실제 코드는 어떻게 생겼습니까? 인덱싱되지 않은 열에 무거운 where-queries가있는 것 같습니다. 수백만 열에도 필터링하지 않고 일반 SELECT를 수행하는 것은 ExecuteReader에서도 빠르다. –
어쩌면 당신은 더 적은 수의 열로 쿼리를 해부하고 그들을 처리하기 위해 몇 개의 쓰레드를 실행할 수 있습니까? – clyc
@ Pauli - 문제는 데이터의 양만큼이나 색인이 아닙니다. 몇 가지 BLOB 열을 다루고 있습니다. : ( –