mysql - Oracle Database Link - MySQL 等价物?

标签 mysql oracle

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

是否有任何 MySQL 等价物?解决方法?

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

最佳答案

我可以为您的方案想到四种可能的解决方法:

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

我个人认为方法 (4) 是最有用的 - 但根据您的要求,其他方法也可能是可能的解决方法。

关于mysql - Oracle Database Link - MySQL 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565993/

相关文章:

mysql - 更新外键表

php - 如何将 CMS 集成到现有网站中

sql - 从一个表中选择在另一个表中存在映射的行

php - 如何在 zend db 中编写更新集?

包含文件上传和其他信息的 PHP 表单

php - 如果类别的值为="",如何打破跳过循环?

oracle - 使用 Oracle 过程连接多个 clob

sql - 通过一次选择查找组中的最大值

oracle - 在包Oracle中创建过程时忽略SQL语句

sql - 级联删除查询