2009-12-16 2 views
0

2 개의 완전히 다른 데이터베이스가 있습니다. 하나는 MSSQL이고 다른 하나는 Pervasive입니다. 제품 데이터가 Pervasive 데이터베이스에 저장되는 방식으로 인해 제품 정보 및 기능을 웹 사이트에 표시 할 수있는 쿼리를 쉽게 실행할 수 없습니다.완전히 다른 데이터베이스의 결과 집합을 기반으로 한 데이터베이스의 레코드를 선택하는 가장 효율적인 방법

그래서 DTS 패키지를 사용하여 제품 데이터를 Pervasive에서 가져 와서 처리합니다. # 제품 항목 # (두 데이터베이스의 기본 키)와 제품 기능의 모든 열이있는 하나의 MSSQL 테이블입니다. 웹 사이트를 매우 쉽고 빠르게 쿼리 할 수 ​​있습니다.

Pervasive 데이터베이스는 ERP 시스템에서 사용하는 데이터베이스이므로 항상 각 제품에 대해 가장 최신의 인벤토리 합계가 있습니다. 이제는 실시간으로 MSSQL 데이터베이스에서 검색 한 레코드를 기반으로 Pervasive 데이터베이스에서 인벤토리 정보를 가장 효율적으로 가져올 수있는 가장 좋은 방법을 찾아야합니다.

하나의 제품 인벤토리 정보를 가져 오는 것은별로 중요하지 않습니다. 필자의 주요 관심사는 MSSQL 제품 테이블의 쿼리에서 반환 된 항목 목록에 대해 인벤토리 데이터를 가져와 인벤토리 데이터를 올바른 항목과 비교하는 방법입니다.

Pervasive db의 모든 인벤토리 데이터를 실시간으로 캐시해야하므로 캐시되지 않습니다.

목록의 각 항목에 대해 SELECT 문을 생성하는 것 외에이 데이터를 가져 오는 가장 효율적인 옵션은 무엇입니까? 가능한 경우 데이터베이스 호출을 하나만하고 싶습니다.

감사합니다.

답변

1

SQL Server에서 다른 데이터베이스로 데이터에 액세스하려면 적절한 자격 증명/사용 권한을 사용하여 다른 데이터베이스 (이 예에서는 Pervasive)를 가리키는 SQL Server에 linked server instance을 먼저 만들어야합니다. This article is for linking MySQL to SQL Server 2008이지만 단계는 동일합니다.

일단 완료되면 단일 데이터베이스를 처리하는 것처럼 SQL Server에서 쿼리를 작성할 수 있습니다.

+0

나는이 질문에서 더 분명해야했다. Pervasive db의 인벤토리 정보를 MSSQL db에 쓰지 않아도되므로 웹 사이트에서 필요한 정보를 처리하고 표시 할 수 있습니다. 사실, 엘리엇이라고합니다. : o) – NinjaBomb

+0

엘리엇, 응? 필자가 Pervasive를 사용한 제품은 Sage (회계)와 AutoCAD –

+0

이었습니다. 그 전에는 Macola라고 불 렸습니다. – NinjaBomb

0

MSSQL에서 캐시를 유지하고 인벤토리 수준이 변경 될 때 Pervasive가 트리거를 사용하여 캐시를 업데이트 할 수 있습니까?

+0

좋은 생각이지만 Pervasive 데이터베이스에 트리거를 추가 할 수있는 권한이 없다고 생각합니다. – NinjaBomb

0

이 경우 적용 할 수 있는지 확실하지 않지만 MySQL에서는 한 번에 상당한 수의 데이터 집합 (최대 수천 개)을 가져 오는 데 IN 연산자를 사용했습니다.

SELECT a,b,c FROM table WHERE id IN (123,234,345,456,...) 

때로는 실제로 보내야하는 쿼리 수가 줄어들 수 있습니다.

관련 문제