Sql 从不同服务器中的链接表连接时MS Access的性能?

Sql 从不同服务器中的链接表连接时MS Access的性能?,sql,performance,ms-access,jet,linked-tables,Sql,Performance,Ms Access,Jet,Linked Tables,如果我有一个MS Access数据库,其中包含来自两个不同数据库服务器的链接表(比如一个来自SQL Server db,另一个来自Oracle db),并且我编写了一个连接这两个表的查询,Access(我想是Jet引擎)将如何处理此查询?它是否会首先在每个表上发出一些选择,以获取我要加入的字段,找出匹配的行,然后为这些行发出更多选择?这是我的猜测。如果联接的两侧都有索引,这会有所帮助,但由于两台服务器都不能完全控制查询,因此无法进一步优化查询。我猜是这样。如果联接的两侧都有索引,这会有所帮助,但

如果我有一个MS Access数据库,其中包含来自两个不同数据库服务器的链接表(比如一个来自SQL Server db,另一个来自Oracle db),并且我编写了一个连接这两个表的查询,Access(我想是Jet引擎)将如何处理此查询?它是否会首先在每个表上发出一些选择,以获取我要加入的字段,找出匹配的行,然后为这些行发出更多选择?

这是我的猜测。如果联接的两侧都有索引,这会有所帮助,但由于两台服务器都不能完全控制查询,因此无法进一步优化查询。

我猜是这样。如果联接的两侧都有索引,这会有所帮助,但由于两台服务器都不能完全控制查询,因此无法进一步优化查询。

我没有将两个不同数据系统的表联接起来的实际经验。但是,根据要求等,您可能会发现,运行SELECT查询时,只需将所需的记录和字段放入Access表中,并在Access中执行最终联接和查询,会更快。

我没有从两个不同数据系统联接表的实际经验。但是,根据要求等,您可能会发现运行SELECT查询时只需要将所需的记录和字段放入Access表,并在Access中执行最终的联接和查询会更快。

是的,您可能会遇到一些严重的性能问题。我做这种事已经很多年了。Oracle、Sql和DB2-ugh。有时我不得不在早上5点设置计时器,所以当我在7点到达时就完成了

如果您的数据集足够重要,那么在本地构建表并链接数据通常会更快。对于远程数据集,还要查看传递

例如,假设您正在从oracle数据库中提取昨天的所有客户,并从sql数据库中提取所有客户购买的产品。假设你平均每天有100名客户,但名单上有30000名客户,假设你的产品名单上有500000名客户。您可以在oracle数据库中查询100个客户的列表,然后将其作为传递查询中的
in
语句写入sql数据库。您几乎可以立即获得数据

或者,如果您的记录集很大,则构建两个ID的本地表,在本地比较它们,然后只提取必要的匹配项


这很难看,但你可以节省自己的时间。

是的,你可能会有一些严重的性能问题。我做这种事已经很多年了。Oracle、Sql和DB2-ugh。有时我不得不在早上5点设置计时器,所以当我在7点到达时就完成了

如果您的数据集足够重要,那么在本地构建表并链接数据通常会更快。对于远程数据集,还要查看传递

例如,假设您正在从oracle数据库中提取昨天的所有客户,并从sql数据库中提取所有客户购买的产品。假设你平均每天有100名客户,但名单上有30000名客户,假设你的产品名单上有500000名客户。您可以在oracle数据库中查询100个客户的列表,然后将其作为传递查询中的
in
语句写入sql数据库。您几乎可以立即获得数据

或者,如果您的记录集很大,则构建两个ID的本地表,在本地比较它们,然后只提取必要的匹配项


这很难看,但你可以从字面上为自己节省几个小时。

要理解的关键是:

在Access/Jet将其请求发送到两个服务器数据库之前,您是否提出了Access/Jet可以优化的问题?如果要连接两个表的全部内容,Jet将不得不请求这两个表,这将非常糟糕


另一方面,如果您可以提供限制连接的一侧或两侧的条件,则Access/Jet可以更有效地请求过滤后的结果集,而不是完整的表。

要理解的关键是:

在Access/Jet将其请求发送到两个服务器数据库之前,您是否提出了Access/Jet可以优化的问题?如果要连接两个表的全部内容,Jet将不得不请求这两个表,这将非常糟糕


另一方面,如果您可以提供限制联接的一侧或两侧的条件,则Access/Jet可以更有效地请求过滤后的结果集,而不是完整的表。

在本地表和链接表之间多次这样做,这正是它将要做的。在本地表和链接表之间多次这样做之后,这正是它将要做的。