Oracle数据库链接 - MySQL等价?

时间:2009-10-14 12:41:20

标签: mysql oracle

Oracle的database link允许用户查询多个物理数据库。

有没有相同的MySQL?解决方法?

我想在两个表上运行连接查询,这两个表位于两个物理数据库中。在MySQL可以吗?

2 个答案:

答案 0 :(得分:41)

我可以为您的方案考虑四种可能的解决方法:

  1. 在查询外部表时使用完全限定表名。 MySQL支持dbname.tablename - 语法来访问当前数据库范围之外的表。这要求当前连接的用户具有从另一个物理数据库中的请求表中读取的适当权限。
  2. 如果您的外部数据库在不同的MySQL服务器上运行(在同一台计算机上或通过网络连接),您可以使用复制来不断更新远程表的只读副本。 只有在运行两个单独的MySQL实例时才能进行复制。
  3. 使用FEDERATED MySQL storage engine虚拟表导入当前数据库。这提升了将当前用户访问权限授予第二个数据库的要求,因为在使用CREATE TABLE存储引擎时,凭据FEDERATED - 语句提供了凭据。这也适用于在不同物理服务器或不同MySQL实例上运行的数据库。我认为这将是性能最差的选项,并且确实有一些limitations - 或多或少取决于您的使用场景和您的要求。
  4. 这是方法1的扩展。您不必在每次从外部表中请求信息时都必须指定完全限定表名称,而只需创建{{3}在基于简单SELECT <<columns>> FROM <<database>>.<<table>>的当前数据库中。这类似于FEDERATED - 方法的工作方式,但仅限于同一MySQL实例上的表。
  5. 我个人认为方法(4)是最有用的 - 但其他方法也可以根据您的要求进行解决。

答案 1 :(得分:6)

目前没有MySQL equavilent方法,请参阅this post。然而,正如海报建议您可以通过在表名前面添加数据库名称来解决 if 数据库在同一台计算机上。

另见this,它已有6年历史,但仍未解决。它已关闭,可能不再在他们的待办事项清单上了。