基于完全不同的数据库的结果集在一个数据库中选择记录的最有效方法

时间:2009-12-16 02:55:40

标签: .net asp.net sql-server-2008 pervasive pervasive-sql

我有两个完全独立的数据库 - 一个MSSQL和一个Pervasive。由于我们的产品数据存储在Pervasive数据库中的方式,您无法轻松运行查询以获取要在我们的网站上显示的产品信息和功能。

因此,使用DTS包我从Pervasive获取产品数据并对其进行处理,因此它是一个MSSQL表,其中包含产品项#(两个数据库的主键)和产品功能的所有列。查询我们的网站非常简单快捷。

Pervasive数据库是ERP系统使用的数据库,因此它始终拥有每种产品的最新库存总数。现在,我需要找到最佳方法,以便基于从MSSQL数据库中实时检索的记录,最有效地从Pervasive数据库中提取库存信息。

获取一个产品的库存信息没什么大不了的。我主要关心的是如何从MSSQL产品表上的查询返回的项目列表中提取库存数据,并使库存数据与正确的项目匹配。

从Pervasive db中缓存所有库存数据将无法正常工作,因为我需要它是实时的。

除了为列表中的每个项目生成SELECT语句之外,提取此数据的最有效选项是什么?如果可能的话,我希望它只是一个数据库调用。

感谢。

3 个答案:

答案 0 :(得分:1)

为了从SQL Server访问不同数据库的数据,您必须首先在SQL Server上创建linked server instance,指向具有适当凭据/权限的其他数据库(在此示例中为Pervasive)。 This article is for linking MySQL to SQL Server 2008,但步骤相同。

一旦到位,您就可以在SQL Server中编写查询,就像处理单个数据库一样。

答案 1 :(得分:0)

你可以在MSSQL中保留一个缓存,并在库存水平发生变化时让Pervasive使用触发器更新它吗?

答案 2 :(得分:0)

我不太确定这是否适用,但在MySQL中,我使用IN运算符一次性提取大量数据(最多数千个)。

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

它有时可以真正减少需要发送的查询数量。