문제

두 개의 다른 데이터베이스 서버 (SQL Server DB의 하나의 테이블과 Oracle DB의 한 테이블)가 링크 된 MS 액세스 데이터베이스가있는 경우이 두 테이블을 결합하는 쿼리를 작성하는 방법 (또는 제트 엔진 , 나는 추측합니까?)이 쿼리를 처리합니까? 각 테이블에서 일부 선택을 먼저 발행하여 내가 결합하는 필드를 가져오고, 어떤 행이 일치하는지, 해당 행에 대해 더 많은 선택을 발행합니까?

도움이 되었습니까?

해결책

이해해야 할 주요 사항은 다음과 같습니다.

Access/Jet가 요청을 두 서버 데이터베이스에 보내기 전에 최적화 할 수 있다는 질문을하고 있습니까? 두 테이블 전체에 합류하는 경우 제트는 두 테이블을 모두 요청해야합니다.

반면에 조인의 하나 또는 양쪽을 제한하는 기준을 제공 할 수있는 경우 액세스/제트가 더 효율적일 수 있으며 전체 테이블 대신 필터링 된 결과 세트를 요청할 수 있습니다.

다른 팁

그렇습니다. 몇 가지 심각한 성능 문제가 발생할 수 있습니다. 나는 몇 년 동안 이런 일을 해왔습니다. Oracle, SQL 및 DB2 -UGH. 때로는 오전 5시에 타이머에 설정해야했기 때문에 7시에 들어 오면 완료되었습니다.

데이터 세트가 충분히 중요하면 종종 테이블을 로컬로 빌드 한 다음 데이터를 연결하는 것이 더 빠릅니다. 원격 데이터 세트의 경우 패스 스루도 확인하십시오.

예를 들어, 어제의 모든 고객을 Oracle DB에서 끌어 당기고 SQL DB에서 모든 고객 구매를한다고 가정 해 봅시다. 매일 평균 100 명의 고객이 있지만 30,000 명을 가지고 있으며 귀하의 제품에 50 만 명이 있다고 가정 해 봅시다. 100 명의 고객 목록에 대해 Oracle DB를 쿼리 한 다음 IN SQL DB에 대한 통과 쿼리의 명령문. 거의 즉시 데이터를 얻을 수 있습니다.

또는 레코드 세트가 거대한 경우 두 ID의 로컬 테이블을 만들고 로컬로 비교 한 다음 필요한 경기를 당기십시오.

못 생겼지 만 문자 그대로 시간을 절약 할 수 있습니다.

그것은 내 추측 일 것입니다. 결합의 양쪽에 인덱스가있는 경우 도움이되지만 서버가 쿼리를 완전히 제어 할 수 없으므로 추가 쿼리 최적화가 불가능합니다.

두 가지 다른 데이터 시스템에서 테이블을 결합한 실질적인 경험이 없습니다. 그러나 요구 사항 등에 따라 액세스 테이블에 필요한 레코드 및 필드만으로 선택 쿼리를 실행하고 액세스에서 최종 조인 및 쿼리를 수행하는 것이 더 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top