答案 0 :(得分:41)
我可以为您的方案考虑四种可能的解决方法:
dbname.tablename
- 语法来访问当前数据库范围之外的表。这要求当前连接的用户具有从另一个物理数据库中的请求表中读取的适当权限。FEDERATED
MySQL storage engine虚拟将表导入当前数据库。这提升了将当前用户访问权限授予第二个数据库的要求,因为在使用CREATE TABLE
存储引擎时,凭据FEDERATED
- 语句提供了凭据。这也适用于在不同物理服务器或不同MySQL实例上运行的数据库。我认为这将是性能最差的选项,并且确实有一些limitations - 或多或少取决于您的使用场景和您的要求。SELECT <<columns>> FROM <<database>>.<<table>>
的当前数据库中。这类似于FEDERATED
- 方法的工作方式,但仅限于同一MySQL实例上的表。我个人认为方法(4)是最有用的 - 但其他方法也可以根据您的要求进行解决。
答案 1 :(得分:6)