首页 文章

从不同服务器中的链接表加入时,MS Access的性能如何?

提问于
浏览
1

如果我有一个MS Access数据库,其中包含来自两个不同数据库服务器的链接表(比如一个来自SQL Server数据库的表和一个来自Oracle数据库的表),我写了一个查询来连接这两个表,那么Access(或者引擎)将如何,我猜?)处理这个查询?它会先在每个表上发出一些SELECT来获取我正在加入的字段,然后找出哪些行匹配,然后为这些行发出更多的SELECT?

4 回答

  • 2

    要理解的关键是:

    您是否在向两个服务器数据库发送请求之前询问Access / Jet可以优化的问题?如果你要加入两个表的全部,Jet将不得不请求两个表,这将是丑陋的 .

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

  • 3

    是的,你可能会遇到一些严重的性能问题 . 多年来我做过这种事 . Oracle,Sql和DB2 - 呃 . 有时候我不得不在凌晨5点把它放在计时器上,所以当我7点钟进入时它已经完成了 .

    如果您的数据集非常重要,那么在本地构建表然后链接数据通常会更快 . 对于远程数据集,还要查看passthroughs .

    例如,假设您正在拉动所有昨天's customers from the oracle db and all of the customer purchases from the sql db. Let' s,假设您每天平均有100个客户,但是列出30,000个,并且假设您的产品有500,000个列表 . 您可以查询oracle db以获取100个客户的列表,然后将其作为直通查询中的 IN 语句写入sql db . 您几乎可以立即获得数据 .

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

    这很丑,但你可以节省数小时 .

  • 1

    那是我的猜测 . 如果连接的两端都有索引,但由于两个服务器都无法完全控制查询,因此无法进一步进行查询优化 .

  • 2

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

相关问题